- •Лабораторная работа № 5
- •1. Цель работы
- •2. Краткие теоретические сведения
- •2.1. Описание класса cClientDc
- •2.2. Создание инструментов рисования
- •2.3. Типы данных для хранения информации о графических объектах
- •2.4. Методы рисования линейчатых объектов класса cClientDc
- •2.5. Методы рисования закрашенных объектов с помощью кисти
- •2.6. Методы рисования графических примитивов с помощью кисти и пера
- •2.7. Методы работы с текстом
- •3. Задание на лабораторную работу
- •4. Варианты заданий
- •5. Пример решения типового задания
- •5.1. Задание
- •5.2. Этапы выполнения работы
- •6. Контрольные вопросы
2.6. Методы рисования графических примитивов с помощью кисти и пера
1. Метод построения изображения эллипса:
BOOL Ellipse( int x1, int y1, int x2, int y2 );
BOOL Ellipse( LPCRECT Rect );
который рисует активным пером и закрашивает активной кистью эллипс внутри прямоугольника заданного объектом Rect или координатами вершин (x1, y1); (x2, y2), лежащими на диагонали прямоугольника.
2. Метод изображения закрашенного сектора:
BOOL Pie( int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4 );
BOOL Pie( LPCRECT Rect, CPoint Start, CPoint End );
который рисует активным пером и закрашивает активной кистью сегмент внутри прямоугольника заданного объектом Rect или координатами вершин (x1, y1); (x2, y2), лежащими на диагонали, от начальной точки Start или (x3, y3) до конечной точки End или (x4, y4) против часовой стрелки.
3. Метод изображения закрашенной замкнутой области произвольной формы:
BOOL Polygon (LPPOINT Points, int Count );
который рисует активным пером и закрашивает активной кистью замкнутую область, которая ограничена отрезками, заданными точками массива Points количеством Count.
2.7. Методы работы с текстом
1. Метод установки цвета выводимого текста:
SetTextColor ( RGB(255,0,0) );
//устанавливает светло-красный цвет текста
2. Метод вывода текста на экран в точку с координатами x, y:
BOOL TextOut ( int x, int y, LPCTSTR String, int nCount);
BOOL TextOut ( int x, int y, const CString &str );
Параметры:
str – объект класса CString, содержащий текст для вывода;
String – массив символов, содержащий текст для вывода;
nCount – количество выводимых символов.
3. Задание на лабораторную работу
Разработать приложение на основе диалога для вывода изображения согласно полученному варианту задания. Предусмотреть элементы типа EditBox для ввода пользователем характеристик, указанных в варианте задания.
4. Варианты заданий
1. Вывести в элемент диалога Static Text изображение прямоугольника и равномерно распределенных кругов с сегментами разного цвета согласно рис. 1. Пользователь задает три компоненты цвета секторов одного оттенка и толщину линии обводки в пикселях.
2. Вывести в элемент диалога Static Text изображение прямоугольника и концентрических кругов разного цвета, расположенных согласно рис. 2. Пользователь задает три компоненты цвета центральных кругов и толщину линии обводки в пикселях.
Рис. 1. Вариант задания 1 Рис. 2. Вариант задания 2
3. Вывести в элемент диалога Static Text изображение прямоугольника и линий разного цвета и толщины с одинаковыми расстояниями между ними согласно рис. 3. Пользователь задает три компоненты цвета и толщину в пикселях линий одного типа.
4. Вывести в элемент диалога Static Text изображение десяти равных прямоугольников разного цвета, расположенных согласно рис. 4. Пользователь задает красную компоненту цвета для всех прямоугольников (одно значение), остальные компоненты цвета – случайные числа. Также пользователь задает толщину линии обводки в пикселях.
Рис. 3. Вариант задания 3 Рис. 4. Вариант задания 4
5. Вывести в элемент диалога Static Text изображение из пяти равных прямоугольников двух цветов согласно рис. 5, у трех прямоугольников одинакового цвета изобразить их диагонали. Пользователь задает три компоненты цвета прямоугольников одного оттенка и толщину диагоналей в пикселях.
6. Вывести в элемент диалога Static Text изображение из четырех равных прямоугольников и вписанных в них эллипсов разных цветов согласно рис. 6. Пользователь задает по три компоненты цвета одного овала и одного прямоугольника, а также толщину линии обводки эллипсов в пикселях.
Рис. 5. Вариант задания 5 Рис. 6. Вариант задания 6
7. Вывести в элемент диалога Static Text изображение, состоящее из прямоугольника, прямоугольника со скругленными углами и двух эллипсов разного цвета, как показано на рис. 7. Пользователь задает три компоненты цвета центрального эллипса и толщину линии обводки в пикселях.
8. Вывести в элемент диалога Static Text изображение, состоящее из двух прямоугольников и четырех эллипсов разного цвета согласно рис. 8, соединить центры эллипсов линиями. Пользователь задает три компоненты цвета одного эллипса и толщину линии обводки в пикселях.
Рис. 7. Вариант задания 7 Рис. 8. Вариант задания 8
9. Вывести в элемент диалога Static Text изображение, состоящее из двух прямоугольников, эллипса в центре рисунка, двух полных диагоналей прямоугольников и двух половин диагоналей (рис. 9). Пользователь задает три компоненты цвета центрального эллипса и толщину линии обводки в пикселях.
10. Вывести в элемент диалога Static Text изображение из двух прямоугольников и двух эллипсов, центры которых совпадают (рис. 10). Пользователь задает три компоненты цвета центрального эллипса и толщину линии обводки в пикселях.
Рис. 9. Вариант задания 9 Рис. 10. Вариант задания 10