Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Graph.doc
Скачиваний:
19
Добавлен:
14.05.2015
Размер:
238.59 Кб
Скачать

Преобразование координат

В описании большинства функций рисования указано, что координаты задаются в логических единицах, величина которых зависит от установленного режима. Однако, ряд функций продолжают понимать только физические единицы устройства – пикселы – и для них необходимо осуществлять преобразование координат.

Функции этой группы предназначены для преобразования логических координат в физические и наоборот (LPtoDP и DPtoLP). Кроме того, четыре функции – DPtoHIMETRIC, LPtoHIMETRIC, HIMETRICtoDP и HIMETRICtoLP используются для преобразования координат при передаче размеров объекта OLE и при их получении.

Функции рисования

Итак, параметры заданы, объекты рисования выбраны, режимы установлены – можно рисовать. Давайте рассмотрим, какие возможности предоставляет нам класс CDC для рисования различных графических объектов.

Отображение регионов

Функции этой группы позволяют рисовать рамки (FrameRgn), закрашивать (FillRgn и PaintRgn) и инвертировать цвета регионов (InvertRgn).

Отсечения

Функции этой группы добавляют/исключают области отсечения, которые используются для ограничения области перерисовки (SelectClipRgn, ExcludeClipRect, ExcludeUpdateRgn и IntersectClipRect). Кроме того, некоторые функции группы, например GetClipBox и PtVisible, позволяют определить текущую область отсечения для программного исключения перерисовки части рисунка, что в ряде случаев существенно сокращает время вывода. Для повторного вывода сложного объекта могут потребоваться не только многократные вызовы функций настройки различных параметров и функций собственно вывода, и длительный процесс вычисления (например, при выводе контуров трехмерных объектов).

Рисование линий

Функции этой группы предназначены для рисования прямых (LineТо), гладких (Arc, ArcTo и AngleArc) и ломаных линий (Polyline, PolylineTo, PolyPolyline, PolyBezier, PolyBezierTo и PolyDraw), установленных в момент рисования карандашом. Часть функций меняют при этом текущее положение карандаша (LineTo, ArcTo, PolylineTo и PolyBezierTo), другие – нет. Даже если в результате рисования контур получается замкнутым, закрашивание не осуществляется.

Базовые функции рисования

Функции этой группы осуществляют рисование закрашенных простейших объектов, прежде всего прямоугольников (FillRect, FillSolidRect и InvertRect) с возможностью задания различного типов рамок (FrameRect, Draw3dRect, DrawEdge). К группе относятся функции рисования пиктограмм и битовых массивов (DrawIcon и DrawState) и элементов управления – кнопок, меню, заголовков окон и полос прокрутки (DrawFrameControl). Большинство функций используют для рисования текущие карандаш и кисть.

Остановимся на функции, вернее, на функциях DrawState немного подробнее.

Битовые массивы

BOOL CDC::DrawState (

CPoint pt,

CSize size,

HBITMAP hBitmap,

UINT nFlags,

HBRUSH hBrush = NULL)

BOOL CDC::DrawState (

CPoint pt,

CSize size,

CBitmap* pBitmap,

DINT nFlags,

CBrush* pBrush = NULL)

Пиктограммы

BOOL CDC::DrawState (

CPoint pt,

CSize size,

HICON hIcon,

UINT nFlags,

HBRUSH hBrush = NULL)

BOOL CDC::DrawState (

CPoint pt,

CSize size,

HICON hIcon,

UINT nFlags,

CBrush* pBrush = NULL)

Строки

BOOL CDC::DrawState (

CPoint pt,

CSize size,

LPCTSTR lpszText,

UINT nFlags,

BOOL bPrefixText = TRUE,

int nTextLen = 0,

HBRUSH hBrush = NULL)

BOOL CDC::DrawState (

CPoint pt,

CSize size,

LPCTSTR lpszText,

UINT nFlags,

BOOL bPrefixText = TRUE,

int nTextLen = 0,

CBrush* pBrush = NULL)

"Управляемый вывод" изображений

BOOL CDC::DrawState (

CPoint pt,

CSize size,

DRAWSTATEPROC lpDrawProc,

LPARAM IData,

UINT nFlags,

HBRUSH hBrush = NULL)

BOOL CDC::DrawState (

CPoint pt,

CSize size,

DPAWSTATEPROC lpDrawProc,

LPARAM lData,

UINT nFlags,

CBrush* pBrush = NULL)

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]