- •Хмельницький національний університет проектування інтерфейсів користувача
- •Хмельницький 2009
- •Лабораторна робота №1
- •І. Теоретичні відомості
- •Для розробника вікно є сукупністю великої кількості елементів, які функціонують під управлінням додатку та операційної системи.
- •Створення вікон
- •Головна функція додатку
- •Структура тексту додатку
- •Допоміжні функції створення вікон
- •Приклади створення вікон
- •IV. Контрольні питання
- •Лабораторна робота №2
- •І. Теоретичні відомості
- •Статичний орган управління
- •Смуги прокрутки
- •IV. Контрольні питання
- •Лабораторна робота №3
- •І. Теоретичні відомості
- •Списки рядків
- •Комбінований список
- •IV. Контрольні питання
- •Лабораторна робота №4
- •І. Теоретичні відомості
- •Повідомлення wm_paint
- •Види контексту відображення
- •Встановлення атрибутів контексту відображення
- •Вивід тексту
- •Малювання геометричних фігур
- •IV. Контрольні питання
- •Лабораторна робота №5
- •І. Теоретичні відомості
- •Інструменти малювання
- •Відображення графічних об'єктів
- •IV. Контрольні питання
- •Лабораторна робота №6
- •І. Теоретичні відомості
- •Створення меню
- •Повідомлення від меню
- •Плаваюче меню
- •Акселератори
- •IV. Контрольні питання
- •Література
Інструменти малювання
Методи, відображення об'єкту Graphics використовують перо або пензль заданого кольору, товщини, стилю і деякі інші об'єкти.
Об'єкт Color і його методи. Об'єкт Color зберігає 32-розрдяне значення кольору. Колір задають за допомогою чотирьох 8-розрядних компонент: alpha, red, green, blue. Компоненти приймають значення від 0 до 255. Компоненти red, green, blue описують інтенсивність відповідно червоного, зеленого і синього кольорів. Параметрalphaзадає ступніь прозорості кольору (0 - повністю прозорий колір, 255 - непрозорий колір). Екземпляр об'єкту Color створю один з наступних конструкторів: Сolor(), Color(a,r,g,b), Color(argb), Color(r,g,b).
Методи:
GetA, GetB, GetG i GetR повертають значення відповідно компонент alpha, blue, green i red об'єкту Color.
GetValue повертає ARGB-значення кольору об'єкту Color.
MakeARGB створює 32-розрядне ARGB-значення кольору об'єкту Color.
SetValue встановлює ARGB-значення кольору об'єкту Color.
SetFromCOLORREF використовує значення типу COLORREF для встановлення ARGB-значення кольору об'єкту Color.
ToCOLORREF перетворює ARGB-значення кольору об'єкту Color в GDI COLORREF-значення.
Об'єкт Pen і його методи. Об'єктPen(перо) використовують для малювання ліній і прямокутників.Він має два конструктори - Pen(brush,width) i Pen(color,width). Параметр width за замовчуванням дорівнює 1.0. Перший конструктор створює об'єкт Pen, який для малювання ліній використовує пензль brush і товщину ліній
Width. Другий конструктор створює об'єкт Pen кольору color і товщини ліній width.
Методи:
Clone-створює копію об'єкту Pen і повертає вказівник на створений об'єкт.
GetAlignment - повертає значення використовуваного об'єктом Pen стилю вирівнювання.
GetBrush - повертає вказівник на використовуваний об'єктом Penпензль.
GetColor - записує в зімнну color значення кольору об'єкту Pen.
GetCompoundArray - записує в масив compoundArray масив даних складової прямої лінії об'єкту Pen.
GetCompoundArrayCount - повертає кількість елементів в масиві складової прямої.
GetCustomEndCap - обирає вказівник на потчоний об'єкт CustomLineCap, який малює завершення об'єкту Pen.
GetCustomStartCap - обирає вказівник на поточний об'єкт CustomLineCap, який малює початок об'єкту Pen.
GetDashCap - повертає стиль рисочки об'єкту Pen.
GetDashOffset - повертає відстань від початку штрихової лінії до першого пробілу.
GetDashPattern - обирає масив з count даних dashArray штрихової лінії об'єкту Pen.
GetDashPatternCount - повертає кількість елементів штрихової лінії.
GetDashStyle - повертає стиль рисочок штрихової лінії об'єкту Pen.
GetEndCap - повертає стилькінця лінії об'єкту Pen.
GetLastStatus - повертає статус завершення останнього виклику деякого методу об'єкту Pen.
GetLineJoin - повертає стиль з'єднання ліній об'єкту Pen.
GetMitterLimit - повертає величину, яка обмежує область з'єднань ліній.
GetPenType - повертає тип об'єкту Pen.
GetStartCap - повертає стиль початку лінії об'єкту Pen.
GetTransform - обирає матрицю перетворення фізичної системи.
GetWidth - повертає товщину ліній об'єкту Pen.
ResetTransform - перетворює матрицю перетворення фізичної системи координат об'єкту Pen в одиничну матрицю.
RotateTransform - перемножує матрицю перетворення фізичної системи координат відображуваного елементу і матрицю повороту на кут в angle градусів за годинниковою стрілкою
ScaleTransform - перемножує матрицю перетворення фізичної системи координат відображуваногго елементу і матрицю масштабування.
SetAlignmnet - встановлює стиль вирівнювання пера відносно лінії малювання.
SetBrush - встановлює пензль для об'єкту Pen.
SetColor - встановлю колір об'єкту Pen.
SetCompoundArray - встановлює масив з count елементів складової прямої.
SetCustomEndCap - встановлює стиль кінця лінії об'єкту Pen.
SetCustomStartCap - встановлює стиль початку лінії об'єкту Pen.
SetDashCap - встановлює стиль рисочок штрихової лінії.
SetDashOffset - встановлює відстань від точки початку штрихової лінії до точки початку першої рисочки.
SetDashPattern - встановлює масив з count довжин рисочок і пробілів штрихової лінії.
SetDashStyle - встановлює стиль штрихової лінії.
SetEndCap - встановлює стиль кінця лінії.
SetLineCap - встановлює стилі початку, кінця ліній, а також рисочок штрихових ліній.
SetLineJoin - встановлює стиль з'єднання кінців ліній.
SetMitterLimit - встановлює величину обмеження області з'єднання кінців ліній.
SetStartCap - встановлює стиль початку лінії.
SetTransform - встановлює матрицю перетворення фізичних величин.
SetWidth - встановлює товщину пера.
Об'єкт Brush і його методи. Цей клас є абстрактним класом, основою більш досконалих пензлей. Він має всього 3 методи:
Clone - повертає копію існуючого пензля.
GetLastStatus- повертає статус звершення останнього виклику деякого методу об'єкта Brush.
GetType - повертає тип пензля у вигляді константи.
Клас SolidBrush і його методи. Цей клас визначає об'єкт Brush одного суцільного кольору. Він має єдиний конструктор SolidBrush(const Color& color), який створює пензль суцільного кольору. Він наслідує методи класу Brush і має власні 2 методи:
GetColor - обирає колір пензля;
SetColor - встановлює колір пензля.
Клас HatchBrush і його методи. Цей клас визначає штрихований об'єкт Brush. Має єдиний конструктор: HatchBrush(HatchStyle hatchStyle, const Color& foreColor, const Color& backColor), який створює пензль з кольором фону backColor, кольором ліній foreColor та стилем ліній hatchStyle. Він наслідує методи класу Brush і має власні 3 методи:
GetBackgroundColor - обирає колір фона пензля;
GetForegroundColor - обирає колір ліній пензля;
GetHatchStyle - повертає стиль пензля у вигляді константи.
Клас LinearGradientBrush і його методи. Цей клас визначає пензль зі змінним кольором, де колір поступово змінюється від початкової гарничної лінії до кінцевої гарничної лінії. Граничні ліні паралельні одна одній, а градієнт кольору їм перпендикулярний.
Він має 6 конструкторів. Різниця між ними полягає в способі задання початкової і кінцевої точок градієнту. Найпростіший з них: LinearGradientBrush(const Point& point1, const Point& point2, const Color& color1, const Color& color2) створює об'єкт з вказанням почтакових і кінцевих точок і кольорів градієнту кольору.
Він наслідує методи класу Brush і має свої 15 методів:
SetBlend - встановлює фактори і позиції змішування градієнту;
SetBlendBellShape - встановлює колоколоподібну криву змішування градієнту.
SetBlendTriangularShape - встановлює трикутну криву змішування градієнту.
SetGammaCorrection - вказує, застосовувати чи ні гамма-корекцію для пензля.
SetInterpolationColors - встановлює кольори і позиції для змішування градієнту шляхом інтерполяції.
SetLinearColors - встановлює початковий і кінцевий кольори градієнту.
SetWrapMode - встановлює режим покриття поверхні пензлем.
Клас PathGradientBrush і його методи. Об'єкт PathGradientBrush описує атрибути градієнту кольору і шлях, пересуваючись яким змінюється колір. До атрибутів градієнту в цьому випадку належать граничний шлях, центральна точка і колір цієї точки. При зафарбовуванні колір замкненої фігури поступово змінюється в усіх напрямках від центральної точки до граничного шляху. Цей об'єкт має 3 конструктора. Один з них: PathGradientBrush(const Point* points, INT count, WrapMode wrapMode) створює пензль на базі шляху, заданому масивом count точок points.
Він наслідує методи класу Brush і має власні 32 методи:
GetBlend - обирає count елементів масиву змішування кольорів blendFactors в позиціях blendPositions.
SetBlend - встановлює сount елементів масивів blendFactors i blendPositions.
GetBlendCount - повертає кількість параметрів змішування кольорів.
GetCenterColor - обирає значення кольору в центральній точці.
SetCenterColor - встановлює значення кольору в центральній точці.
GetFocusScales - обирає показники масштабування центральної точки.
SetFocusScales - встановлює показники масштабування вздовж вісів Х і У.
GetGammaCorrection-повертає значення TRUE, якщо гамма-корекцію ввімкнено.
SetGammaCorrection - встановлює гамма-корекцію.
GetInterpolationColors - обирає масиви значень передвизначених когльорів і точок вузлів інтерполяції.
SetInterpolationColors - встановлює масиви значень передвизначених когльорів і точок вузлів інтерполяції.
GetSurroundColors - обирає масив з кольорів елементів шляху.
SetSurroundColors - встановлює кольори елементів межуючого шляху.
Клас TextureBrush і його методи. Цей клас описує об'єкт Brush, який для зафарбовування використовує об'єкт Image. Він має 7 конструкторів, які розрізняються способом вирізання прямокутної частини зображення. Один з них:TextureBrush(Image*image,WrapModewrapMode,INTdstX,INTdstY,INTdstWidth,INTdstHeight) створює об'єкт TextureBrush на основі об'єкту image, режиму wrapMode і координат.
Клас TextureBrush наслідує методи класу Brush і має власні 10 методів. Сутність методу полягає в масштабуванні та обертанні пензля. Один з них - SetTransform - встановлює матрицю перетворення пензля.
Об'єкт Font і його методи. Клас Font описує сімейство, висоту, розмір і стиль (або комбінацію стилів) шрифта. Він має 6 конструкторів. Розглянемо 2 відмінних по суті конструктори:
Font(HDC hdc); - створює об'єкт Font на базі шрифта контексту hdc з GDI;
Font(const FontFamily* family, REAL emSize, INT style, Unit unit); - створює об'єкт Font на базі об'єкту family класу FontFamily, висоти emSize, стилю style і одиниці вимірювання unit шрифта.
Клас Font має 11 методів:
Clone-створює копію об'єкту Font.
GetFamily - обирає об'єкт familyкласуFontFamilyшрифта.
GetHeight - повертає висоту шрифта в пікселях або в одиницях об'єкту Graphics.
GetSize-повертає розмір шрифта, відповідний параметру emsize другого конструктора.
GetStyle - повертає стиль шрифта.
GetUnit - повертає значення параметра unitдля шрифта.
IsAvailable - повертає значення TRUE, якщо шрифт створено успішно.
Клас Image і його методи. Клас Image містить методи завантаження і зберігання растрових і веткорних (метафайли) зображень. Об'єкт Image можна створювати з різного типу файлів, включаючи BMP, ICON, GIF, JPEG, Exif, PNG, TIFF, WMF, EMF. Він має 2 конструктори, які відрізняються способом завантаження зображення. Конструктор завантаження з файлу: Image(const WCHAR* filename, BOOL useEmbeddedColorManagement); створює об'єкт Image з зображення, яке зберігається в файлі filename.
Має 37 методів:
Clone - створює копію об'єкту Image.
GetAllPropertyItems - обирає в буфер метадані об'єкту Image.
GetFrameCount - повертає кількість кадрів об'єкту Image.
GetFrameDimensionsCount - повертає розмір кадру в об'єкті Image.
GetPixelFormat - повертає формат пікселя об'єкту Image.
GetPropertyCount - повертає кількість метаданих об'єкту Image.
GetHeight - повертає кількість пікселів об'єкту Image по вертикалі (висоту).
GetPropertyIdList - обирає список ідентифікаторів властивостей метаданих об'єкту Image.
GetType - повертає тип об'єкту Image.
RotateFlip - повертає за годинниковою стрілкою і дзеркально відображає зображення.
Save - записує зображення в файл.
SaveAdd-додає кадр в файл, описаний в попередньому виклику метода Save.
SelectActiveFrame - обирає кадр, вказаний параметрами, об'єкту Image.