Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Разработка графического редактора




Шаг 7. Рисование фигур.

Код рисования проще всего разместить в функции CDRWView::OnDraw(), которая вызывается автоматически (это так называемая функция обратного вызова – callback function) всякий раз, когда изображение в окне должно быть обновлено, а именно при свертывании и развертывании окна, при изменении его размеров, при перекрытии окна другим окном и т.д. Если мы поместим код рисования фигур, данные для которых читаются из файла, в функцию OnDraw(), то возникнет такая проблема: функция OnDraw() вызывается каркасом приложения уже при первом отображении содержимого окна, т.е. еще до того, как мы прочтем файл и собственно получим данные. Как быть? Можно поступить так: ввести специальную переменную (член-данное) булевского типа, например, bool FirstRun, в конструкторе присвоить ей значение true и проверять это значение в функции OnDraw(). После того как будут прочитаны данные из файла, этой переменной нужно присвоить значение false и «заставить выполниться» функцию OnDraw(). Функцию OnDraw() вызывают на выполнение не явно, а косвенным образом, с помощью функции Invalidate(). С учетом сказанного функция CDRWView::OnFileOpen() может быть реализована так:

CDRWView::OnFileOpen()

{

// ввод имени файла

// чтение данных из файла

Invalidate();

}

 

Каждая уважающая себя бригада должна выбрать оригинальный набор таких фигур, которых нет в приведенной реализации функции OnDraw(), и этот джентльменский набор должен включать не менее двух фигур (см. функции класса CDC в MSDN).

Варианты заданий

Номер компьютера Реализуемые функции
  Draw3dRect, Arc
  DrawEdge, ArcTo
  DrawFrameControl, PolyBezierTo
  DrawIcon (используйте функцию LoadIcon для загрузки одно из стандартных иконок), PolyDraw
  FrameRect, Polyline
  InvertRect (интересно наложить частично прямоугольник, указанный в качестве параметра функции InvertRect, на другую фигуру), ExtTextOut
  Chord, PolylineTo
  Pie, PolyPolyline
  PolyPolygon, DrawText
  RoundRect, PolyBezier
  AngleArc, DrawTextEx

В программе всегда есть еще одна ошибка

Закон Мерфи


Цель работы – освоить программирование меню и панели инструментов, использование мыши и метафайлов Windows (4 час.).

 

Задание.

Требуется разработать программу, которая должна позволять пользователю легко создавать графические изображения, рисовать мышью различные фигуры и сохранять их на диске.

Приложение должно иметь меню Инструменты (Tools), из которого пользователь сможет выбрать вид фигуры (линия, прямоугольник, эллипс, произвольная фигура). Кроме того, приложение должно позволять выбрать вид фигуры с помощью кнопок панели инструментов.

Программа должна также позволять «растягивать» фигуру мышью до нужных размеров, как, например, это делается в программе Paint системы Windows. Пользователю также должна быть предоставлена возможность закраски нарисованной фигуры некоторым цветом.

Для того чтобы созданное пользователем изображение восстанавливалось при перекрытии или сворачивании окна программы, программа должна использовать такой прием, как сохранение изображения (нарисованных пользователем фигур) в метафайле Windows (.wmf) и воспроизводить этот файл для восстановления изображения. Кроме того, программа должна позволять открывать (созданные ею) метафайлы Windows и добавлять в них новые фигуры. Идея такой программы почерпнута из работы [2].




Поделиться с друзьями:


Дата добавления: 2014-12-26; Просмотров: 401; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.01 сек.