Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lr1-7.docx
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
537.12 Кб
Скачать

6 Лабораторная работа № 6. Программирование с использованием библиотеки mfc. Панель инструментов

Цель: получить навыки по созданию панели инструментов

6.1 Теоретическая часть

Рассмотрим проект, который был создан в работе №5. Откройте окно ресурсов и вкладку ToolBar. Здесь нас интересует два элемента: IDR_MAINFRAME и IDR_MAINFRAME_256. Первый определяет 16-цветные пиктограммы, которые отображаются при выборе панели инструментов с маленькими пиктограммами, а второй -24-битные большие. В данной работе необходимы кнопки для панелей обоих типов.

Выберите идентификатор IDR_MAINFRAME_256 и двойным нажатием ЛК мыши откройте окно редактора.

Рисунок 1 –Редактор пиктограмм

Выбираем последний элемент для формирования пиктограммы элемента «Линия». Передвинем данную кнопку немного вправо, чтобы отделить от других. При помощи панели инструментов рисуем свой рисунок.

Для отображения панели цветов, нажмите ПК мыши на панели инструментов и выберите пункт «Показать окно выбора цветов». При помощи кнопок редактирования нарисуйте пиктограмму.

В редакторе свойств измените идентификатор кнопки, например, на ID_Element_Line.

Аналогично, создайте пиктограммы для окружности, прямоугольника и кривой и цветов (красный, синий, зеленый, черный). Запустите программу. Пример результата программы представлен на рисунке.

Добавьте всплывающие подсказки. Для этого перейдите в редакторе панели инструментов к нужной пиктограмме и в свойстве «Приглашение» наберите текст подсказки, предваряя символом «\n».

6.2 Задание

Добавить пиктограмм для элементов и кнопок выбора цветов.

7 Лабораторная работа № 7. Программирование с использованием библиотеки mfc. Основы рисования

Цель: получить навыки рисования в среде Windows

7.1 Теоретическая часть

При рисовании в клиентской области необходимо знать, сто точка отсчета находится в левой верхней точке.

Операционная система Windows требует, чтобы вывод осуществлялась через интерфейс графических устройств (Graphical Device Interface -GDI). Интерфейс GDI позволяет рисовать, не задумываясь, на каком устройстве будет отображаться рисунок. Интерфейс GDI поддерживают все мониторы, а также принтеры и плоттеры.

При выводе изображения на устройство графического вывода (например, экран) используется контекст устройства. Контекст устройства – это структура данных, определенная ОС Windows и содержащая информацию, которая позволяет преобразовать запросы на вывод, поступающие форме независимых вызовов функций GDI, в действия физического вывода конкретного устройства.

С помощью функций GDI можно изменять параметры, которые влияют на вывод в контекст устройства, например, цвет рисования, цвет фона, толщину линии, используемой при рисовании.

В разработанном в предыдущей работе проекте мастер приложений MFC создал класс представления CPainterView, который содержит виртуальный метод OnDraw(). Данный метод вызывается всегда, когда клиентская область должна быть перерисована.

void Cmfc2View::OnDraw(CDC* pDC)

{

// TODO: добавьте специализированный код или вызов базового класса

Cmfc2Doc* pDoc=GetDocument();

ASSERT_VALID(pDoc);

if (!pDoc)

return;

}

Для добавления функции OnDraw() выберите класс Сmfc2View и вызовите контекстное меню, в котором выберите «Мастер классов». В появившемся окне выберите вкладку «Виртуальные функции» и добавьте метод OnDraw().

Указатель pDC является указателем на контекст устройства рисования. Переменная pDoc является указателем на класс Documnet.

В контексте устройства вы рисуете графические сущности (линии, прямоугольники) относительно текущей позиции. Текущая позиция – это точка в клиентской области, которая была установлена ранее, после рисования предыдущей фигуры или установлена явным образом вызовом соответствующей функции.

void Cmfc2View::OnDraw(CDC* pDC)

{

// TODO: добавьте специализированный код или вызов базового класса

Cmfc2Doc* pDoc=GetDocument();

ASSERT_VALID(pDoc);

if (!pDoc)

return;

pDC->MoveTo(50,50);

}

Жирным выделен код, который устанавливает текущую позицию в координаты x и y. Существует две версии функции:

CPoint MoveTo(int x,int y);

CPoint MoveTo(POINT aPoint);

Тип POINT представляет собой структуру:

Typedef struct tagPOINT

{

LONG x;

LONG y;

}

Для рисовании линии используется функция LineTo(int x,int y).

Функция Ellipse(int x1,int y1, int x2,int y2) –рисует окружность

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]