Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Розробка функцій виводу тексту і графічних примітивів




Тепер необхідно написати власне функції формування даних для виводу на екран. Почнемо з функції 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 – Результати роботи програми: функція виводу ліній

Поделиться:





Читайте также:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...