Студопедия

КАТЕГОРИИ:


Архитектура-(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)

Шаг 2. Рисование в окне вида




Рисование в программах на C++ в ОС Windows с использованием стандартных GDI-объектов может показаться несколько непростым делом, но и с ним можно разобраться. В этом может помочь, например, работа [1].

В качестве примера и прототипа приведем текст функции OnDraw(), которая выводит изображение, приведенное на рис. 1. Для примера смотрите программу DRW.exe.

 

 
 

Рис. 1. Пример рисования объектов в окне программы

 

Некоторые комментарии к приведенному ниже тексту функции CDRWView::OnDraw().

Класс CRect предназначен для хранения координат прямоугольной области и выполнения над ними часто употребляемых операций. Основными член-данными этого класса являются координаты углов прямоугольника: left, top, right и bottom.

Обратите внимание на то, что размер и положение круга, а также диагональной линии «привязаны» к размеру окна: изменение размеров окна приводит к изменению диаметра круга, а его центр всегда совпадает с центром окна. Так как координаты всех фигур, кроме круга и прямой линии, не привязаны к размеру окна, то при изменении этих размеров изменяется взаимное размещение фигур.

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

Макрос RGB позволяет “сочинить” свой цвет, указав три его составляющие (Red, Green, Blue), каждая из которых должна находиться, естественно, в диапазоне от 0 до 255.

 

 
 

Наберите текст функции OnDraw() и поэкспериментируйте с программой.

 

Шаг 3. Создание обработчика команды File→Open.

Где открывать и читать файл?

В данном приложении код рисования размещается в функции OnDraw() класса «вид». А где целесообразно открывать файл, читать из него данные и на их основе выполнять рисование фигур? Если все эти действия поместить в функцию OnDraw(), то тогда всякий раз при перерисовке окна программы файл будет повторно открываться, повторно читаться и т.д., что, естественно, нецелесообразно. В принципе, в соответствии с принятой в MFC архитектурой «документ-вид», файл надо было бы открывать и читать из него данные в классе «документ», а уже оттуда передавать эти данные в класс «вид». Это несколько сложновато, как для начала. Поэтому в данной работе мы не будем следовать этой методике и поступим проще.

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

 

Замечание. Так как при работе в среде Visual C++ довольно проблематично выполнять «откаты», то, по крайней мере на первых порах, я рекомендую время от времени выполнять резервное копирование файлов проекта с тем, чтобы легче было исправить ошибку.

 

Обработчик команды меню приложения File→Open проще всего создать следующим образом:

· вызовите или выберите окно Class View из меню View;

· в списке классов выберите CDRWView (предполагается, что приложение Вы назвали DRW);

· вызовите окно свойств (Properties) с помощью команды Alt+Enter (эту команду можно найти, если постараться, в меню View);

· в окне Properties выберите вкладку Events (рис. 2) с помощью кнопаря и на этой вкладке выберите идентификатор ресурса ID_FILE_OPEN и в поле ввода COMMAND выберите имя функции OnFileOpen().

 

В результате этих воистину героических усилий мастер должен создать заготовку функции CDRWView::OnFileOpen(), не содержащей, пока, никакого кода.

 




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


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


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



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




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