Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
37
Добавлен:
16.02.2016
Размер:
4.72 Mб
Скачать

1.1 Объект cPen - карандаш

пример объявления :

CPen pen(S_SOLID,2,RGB(0,0,0));

Где в первый аргумент задает стиль линии, второй – толщину, третий – цвет(каждое число – составляющая красного, зеленого и синего цветов). После создания CPen его нужно выбрать в контекст устройства

Пример выбора в контекст устройства.

CPen *pPen = dc.SelectObject(&pen);

После использования карандаша, нужно вернуть в контекст устройства

предидущий карандаш:

dc.SelectObject(pPen);

    1. Для отрисовки линии используется пара функций :

dc.MoveTo( X1, Y1); dc.LineTo( X2, Y2 );

рисует линию из точки (x1, y1) в точку (x2, y2).

Обратите внимание, что начало координат у окна находится в левом верхнем углу.

    1. Для вывода текста используется функция

dc.TextOut( X1,Y1,”Просто текст” );

Выводит строку “Просто текст” начиная с точки (X1, Y1)

3. Пример простого графического вывода :

struct { int m_nStyle; LPTSTR m_csStyle; } lnStyle[] = { // структура определяющаая тип линии

PS_SOLID, _T("PS_SOLID"),

PS_DASH, _T("PS_DASH"),

PS_DOT, _T("PS_DOT"),

PS_DASHDOT, _T("PS_DASHDOT"),

PS_DASHDOTDOT, _T("PS_DASHDOTDOT"),

PS_NULL, _T("PS_NULL"),

PS_INSIDEFRAME, _T("PS_INSIDEFRAME")

};

//

// чтобы при любом размере шрифта

// текст не налезал друг на друга

// получим характеристики текущего

// шрифта

//

TEXTMETRIC tm;

dc.GetTextMetrics(&tm); // получаем параметры шрифта, используемого для вывода текста

// устанавливаем режим "прозрачного" вывода

dc.SetBkMode(TRANSPARENT);

for (int i = 0; i < sizeof(lnStyle) / sizeof(lnStyle[0]); i++)

{

// будем рисовать разными по стилю карандашами,

// но имеющими единичную толщину и черный цвет

CPen pen(lnStyle[i].m_nStyle, 1, RGB(0, 0, 0));

CPen *pPen = dc.SelectObject(&pen);

// учитываем высоту символов и расстояние между строками

int nY = 10+i*(tm.tmHeight+tm.tmExternalLeading);

dc.TextOut(10, nY, lnStyle[i].m_csStyle); // Вывод текста

dc.MoveTo(200, nY+(tm.tmHeight+tm.tmExternalLeading) / 2); // перемещаем курсор

dc.LineTo(400, nY+(tm.tmHeight+tm.tmExternalLeading) / 2); // рисуем линию

dc.SelectObject(pPen);

}

4. Для хранения значений функции по абсциссе и ординате вам понадобятся 2 вещественных массива. Для формирования значений понадобятся функции из заголовочного файла <math.h>. Обратите внимание, что для тригонометрических функций аргумент задается в радианах.

3.3 Выполнение проекта

Проверим в действии созданный проект. Для этого нам необходимо выполнить компиляцию, компоновку и запуск программы на выполнение. Программы компиляции и компоновки запустим на выполнение с помощью функциональной клавиши F7. Если эти процессы завершились успешно, то в окне сообщений мы увидим сообщение:

CupSt.exe – 0 error(s), 0 warning(s) (0 ошибок, 0 замечаний ). После этого можем запустить созданную исполняемую программуCupSt.exeс помощью команды менюBuild/Execute, или кнопкиExecuteProgramна панели инструментов или клавишного аккордаCtrl/F5. В ответ получим созданную диалоговую панель, готовую к приему входной информации в окна редактирования для ввода.

Если же на этапе компиляции или компоновки программы были обнаружены ошибки, то их следует локализовать(найти местоположение в исходном коде), исправить и только после этого запускать программу на выполнение.

При поиске алгоритмических ошибок всегда следует прибегать к услугам программы Отладчик, которая запускается командой меню Build/ Start Debug.

Соседние файлы в папке МетодУказЛабРабот