Розробка функцій виводу тексту і графічних примітивів
⇐ ПредыдущаяСтр 8 из 8 Тепер необхідно написати власне функції формування даних для виводу на екран. Почнемо з функції ShowFonts(CDC* pDC).
void CTestPaintView::ShowFonts(CDC *pDC) { LOGFONT myfont; myfont.lfHeight = 8; myfont.lfWidth = 0; myfont.lfEscapement = 0; myfont.lfOrientation = 0; myfont.lfWeight = FW_NORMAL; myfont.lfItalic = 0; myfont.lfUnderline = 0; myfont.lfStrikeOut = 0; myfont.lfCharSet = ANSI_CHARSET; myfont.lfOutPrecision = OUT_DEFAULT_PRECIS; myfont.lfClipPrecision = CLIP_DEFAULT_PRECIS; myfont.lfQuality = PROOF_QUALITY; myfont.lfPitchAndFamily = VARIABLE_PITCH | FF_ROMAN; strcpy(myfont.lfFaceName, "Times New Roman");
UINT pos = 0; UINT i; for (i=0; i<8; i++) { myfont.lfHeight = 8 + (i*8);
if (i==5) myfont.lfItalic = 1; if (i==6) myfont.lfUnderline = 1; if (i==7) myfont.lfStrikeOut = 1;
CFont font; font.CreateFontIndirect(&myfont); CFont* oldfont = pDC->SelectObject(&font);
pos += myfont.lfHeight; pDC->TextOut(20, pos, "sample font...");
pDC->SelectObject(oldfont); } } Лістинг 3.3 – Текст функції виводу шрифтів
Функція починає з того, що встановлює шрифт Times New Roman заввишки 8 пікселів шириною, яка найкращим чином відповідає висоті (лістинг 3.2). Потім в циклі послідовно збільшує висоту шрифту, що виводиться, і, починаючи з п'ятого рядка додає шрифту додаткові атрибути: курсив, підкреслення, перекреслювання (рис 3.3). Після установки атрибутів функція створює новий шрифт – екземпляр класу CFont і настроює шрифт відповідно до заданих параметрів. Потім створюється покажчик на поточний шрифт, який після виводу на екран чергового рядка встановлюється як поточний контекст. Тепер відкомпілюйте і відтранслюйте додаток. Після запуску виконуваного файла ви побачите декілька рядків тексту, що поступово збільшуються за розміром. Клацніть на вікні лівою кнопкою миші і фон стане чистим – це тому, що функція ShowPens(CDC* pDC) ще нічого не робить. Клацнувши ще раз, отримаємо знову зображення тексту.
Рисунок 3.3 – Результати роботи програми: функція виводу тексту
Тепер перейдемо до функції ShowPens(CDC* pDC). Створення цієї функції набагато простіше попередньої, оскільки тут вимагається задати тільки стиль зображення лінії, її товщину і колір. void CTestPaintView::ShowPens(CDC *pDC) { srand(time(NULL)); UINT pos = 10; UINT i; for (i=0; i<16; ++i){ CPen pen(PS_SOLID, i*2+1, RGB(rand()%256,rand()%256,rand()%256)); CPen* oldpen = pDC->SelectObject(&pen);
pos += i*2+10; pDC->MoveTo(20,pos); pDC->LineTo(400,pos);
pDC->SelectObject(oldpen); } } Лістинг 3.4 – Текст функції виводу ліній Функція в тілі циклу спочатку формує нове перо – екземпляр класу CPen. Конструктору необхідно передати три параметри: стиль лінії, товщина лінії, яка збільшується в кожному подальшому циклі, і колір лінії (генерується випадковим чином). Макрос RGB приймає три значення для червоної, зеленої і синьої складових і перетворить їх в код кольору. Як і у випадку з шрифтами в циклі створюється покажчик на поточне перо, яке потім відновлюється в контексті. Після запуску програми функція виведе у вікні 16 ліній товщини, що поступово збільшується, і довільного кольору (рис. 3.4). Спробуйте самостійно міняти різні параметри шрифтів і ліній і виводити їх на екран. Рисунок 3.4 – Результати роботи програми: функція виводу ліній
Читайте также: III. Напишите заголовок к данному тексту. Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|