Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Відображення графічних об'єктів






Клас Graphics складає ядро інтерфейсу GDI+ і відображає графічні об'єкти. Він має 4 конструктора:

- Graphics (HDC hdc); - створює об'єкт Graphics, пов'язаний з контекстом пристрою hdc.

- Graphics (HDC hdc, HANDLE hdevice) - створює об'єкт Graphics, пов'язаний з контекстом пристрою hdc і пристроєм hdevice.

- Graphics(HWND hwnd, BOOL icm); - створює об'єкт Graphics, пов'язаний з вікном hwnd. Необов'язковий параметр icm визначає, чи застосовує (TRUE) об'єкт Graphics коригування кольорів по ICC.

- Graphics(Image* image); - створює об'єкт Graphics, пов'язаний з об'єктом image.

Відображення ліній. Методи відображення ліній в якості першого параметра використовують об'єкт Pen.

Об'єкт Graphics має 4 методи DrawLine, які відрізняються способом задання початкової і кінцевої точок прямої. Об'єкт Graphics має 4 методи DrawRectangle, які відрізняються способом задання координат прямокутника. Об'єкт Graphics має 2 методи DrawRectangles, які малюють послідовність прямокутників. Об'єкт Graphics має 2 методи DrawPolygon, які малюють послідовність з'єднуючих точок прямих. Об'єкт Graphics має 4 методи DrawEllipse, які малюють елліпси в прямокутнику. Об'єкт Graphics має 4 методи DrawArc, які малюють дугу елліпса, замкненого в прямокутнику. Об'єкт Graphics має 4 методи DrawPie, які малюють сектор елліпса, замкненого в прямокутнику. Об'єкт Graphics має 3 методи DrawString, які відображають рядок з заданої кількості символів заданим шрифтом всередині прямокутника. Об'єкт Graphics має 6 методів DrawCurve, які відображають сплайн - послідовність гладко з'єднаних кривих. Об'єкт Graphics має 4 методи DrawСlosedCurve, які будують замкнені сплайни. Об'єкт Graphics має 4 методи DrawBezier, які будують сплайни Безьє. Об'єкт Graphics має 2 методи DrawBeziers, які будують ланцюжок взаємозалежних сплайнів Безьє.

Зафарбовування фігур. Методи зафарбовування фігур в якості першого параметра використовують об'єкт Brush. Об'єкт Graphics має 4 методи FillRectangle, які відрізняються способами задання координат зафарбовуваного прямокутника. Об'єкт Graphics має 2 методи FillRectangles, які зафарбовують задану кількість прямокутників з масиву прямокутників. Об'єкт Graphics має 4 методи FillPolygon, які зафарбовують внутрішню область багатокутника. Об'єкт Graphics має 4 методи FillEllipse, які відрізняються лише способом задання прямокутника, в якому розташовано елліпс, цей метод зафарбовує елліпс в прямокутнику. Об'єкт Graphics має 4 методи FillPie, які зафарбовують сектор елліпса, замкненого в прямоктунику. Об'єкт Graphics має 4 методи FillClosedCurve, які зафарбовують замкнений сплайн.

Відображення зображень. Метод DrawImage. Об'єкт Graphics має 16 методів DrawImage. Перший параметр всіх цих методів вказує на об'єкт Image, який потрібно відобразити.

IІ. ЗМІСТ ЗВІТУ

1. Тема, мета, умова завдання.

2. Опис команд, за допомогою яких було виконано завдання, і результатів їх виконання.

3. Висновок.

ІІІ. ЗАВДАННЯ

Написати програму мовою програмування C++ з використанням GDI+ для реалізації завдання згідно варіанту.

1. Від лівого верхнього до нижнього правого кута робочої області вікна вивести текст таким чином, щоб він повністю розташовувався у вікні при будь-яких змінах розмірів вікна. Використовувати шрифт Times New Roman Cyr.

2. У вікні додатку багаторазово відобразити текст " Привіт!!! " напівжирним шрифтом Arial Cyr. Вивід тексту починати від нижнього краю вікна і продовжувати до верхнього краю, плавно змінюючи колір тексту від жовтого до чорного і колір фону від синього до жовтого. При цьому текст повинен повністю поміщатись по ширині при будь-яких розмірах вікна.

3. В центрі вікна намалювати елліптичну діаграму. Діаграму розбити на сектори 25, 65 та 10% червоного, зеленого блактиного кольорів та вказати по центру дуги кожного сектора відсотки. При всіх змінах розмірів вікна діаграма повинна бути відображена повністю.

4. Розробити вікно перегортання таблиці. Причому у вікна завжди відображати заголовки стовпців. Перший стовпець повинен містити номери рядків, а інші стовпці - дійсні числа, урізані до шести значущих цифр. Малювати стільки рядків і стовпців, скільки без урізання поміщаються у вікні.

5. У вікні додатку відобразити рейтинг учасників якоїсь події: для кожного учасника намалювати геометричне тіло, висота якого пропорційна рейтингу учасника, нижче фігури вивести прізвище учасника, вище - рейтинг у відсотках. Причому текст повинен бути набраний під деяким кутом. Для всіх учасників використовувати різні кольори.

6. У вікні додатку вивести текст " Анкета" російською мовою і строго під ним " Anketa" англійською мовою, першу літеру " А" збільшити в розмірі і зробити спільною для обох слів. Літеру " А" вивести червоним кольором, залишок слова російською мовою - синім, англійською - зеленим. При цьому текст, який виводиться, повинен займати всю висоту або ширину вікна при будь-яких розмірах вікна.

7. Текст заголовку вікна відобразити червоним кольором на фоні заголовку, а правіше цього тексту намалювати синій елліпс, вписаний в зелений прямокутник шириною в 3 смуги заголовку.

8. В робочій області знизу догори багатократно відобразити рядок " Пробний текст", плавно змінюючи фон і колір і збільшуючи висоту на насиченість шрифта. Вивід центрувати по горизонталі. Початкову висоту шрифта взяти за замовчуванням. Вивід завершується, якщо черговий рядок по висоті не поміщається в робочій області.

9. У вікні додатку в 3 стовпчики вивести привітання. В лівому і правому стовпцях розмір шрифта повинен зростати згори донизу, а в середньому - знизу догори. Кольори виводу повинні бути різні при клжному виводі тексту. У випадку перекриття текстів різних стовпців текст не повинен стиратись, причому правий стовпець може перкривати лівий, а середній - обидва стовпці.

10. В центрі вікна намалювати мішень з 10 полів і в кожному полі вивести його значення (від 1 від краю до 10 в центрі). При будь-яких змінах розмірів вікна мішень повинна повністю відображатись у вікні. Поля розфарбувати випадково обраними різними кольорами.

11. У вікні відобразити чорним кольором вісі координат та синім кольором графік функції c*cos(x), де х приймає значення від 0 до 10p і с¹ 0. Розмах виводу по осях ординат і абсцис - 90% розмірів вікна при будь-яких змінах розмірів.

12. Центр робочої області займає маліновий прямокутник з вписаним блакитним елліпсом розміром в половину області за осями. Після натискання лівої кнопки миші це місце займає синій прямокутник, а правої клавіші - зелений елліпс. При зміні розміру вікна повернутись до початкового стану.

13. Описати функцію, яка у вказаному прямокутнику будує елліптичну діаграму. Кількість секторів, їх доля в процентах та кольори зафарбування також передаються аргументами виклику функції.

14. Розмалювати робочу область вікна в різнокольорові клітинки, окреслені чорним кольором, плавно переходячи від червоного кольора в лівому верхньому куті вікна до синього в нижньому правому куті.

15. В центрі екрану створити квадратне вікно з текстом заголовку і стилю WS_POPUPWINDOW. У вікні намалювати шахматну дошку та позначити поля. При натисканні лівої кнопки миші над полем дошки повідомити ім'я поля.

16. В робочій частині вікна при русі миші з натиснутою лівою кнопкою малювати траєкторію руху курсора миші. При натисканні правої кнопки миші помніяти колір для малювання.

17. Робочу область зафарбувати спектром кольорів, починаючи зліва червоним кольором і закінчуючи синім на правому краю. Колір змінювати в 4 етапи: на першому етапі, при максимальній червоній складовій, збільшувати зелену, на другому, при максимальному зеленому, зменшувати червону складову, потім, при максимальному зеленому, збільшувати синю складову і, на останньому етапі, при максимальному синьому зменшити зелену складову.

18. У вікна відобразити клітинки для гри в хрестики-нолики. Прр натисканні лівої кнопки миші в клітинці намалювати хрестик, а правої - нолик. Заборонити заповняти клітинку більше одного разу.

19. Намалювати світлофор, в якому колір " засвічується" при натисканні на цю лампу лівою кнопкою миші. Одночасно може горіти лише один колір.

20. У вікні за допомогою миші виділити прямокутник і створити ефект мерехтіння цього прямокутника.

21. Намалювати декілька геометричних фігур. При натисканні лівої кнопки миші над будь-якою з них показати, що обрана ця фігура.

22. Намалювати графік функції: 2*a*cos(a).

23. В робочій області вікна пензлем за замовчуванням в метричній системі координат намалювати елліпс.

24. Створити вікно зі смугами перегляду та забезпечити перегляд всього вмісту таблиці.

25. Розробити функцію виводу тексту в заданій позиції зі спеціальним ефектом. Ефект полягає в тому, що текст повільно " випливає" зліва направо. Використовуючи цю функцію, відобразити рейтинги учасників деякої події.

26. В робочій області вікна пензлем за замовчуванням в метричній системі координат намалювати прямокутник.

27. У вікні за допомогою миші виділити елліпс і створити ефект мерехтіння цього елліпса.

28. Намалювати графік функції 5*a*sin(a).

29. Розробити функцію виводу тексту в заданій позиції зі спеціальним ефектом. Ефект полягає в тому, що текст повільно " випливає" зправа наліво. Використовуючи цю функцію, відобразити рейтинги учасників деякої події.

30. В центрі вікна намалювати елліптичну діаграму. Діаграму розбити на сектори 20, 60 та 12% червоного, зеленого блактиного кольорів та вказати по центру дуги кожного сектора відсотки. При всіх змінах розмірів вікна діаграма повинна бути відображена повністю.

 

IV. КОНТРОЛЬНІ ПИТАННЯ

 

1. Які особливості виводу у вікно?

2. Які кроки мітсить обробка повідомлення WM_PAINT?

3. Як вивоядть у вікно при обробці будь-яких повідомлень?

4. Як будують гометричні фігури в інтерфейсі GDI+?






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.