Информационный сайт

 

Реклама
bulletinsite.net -> Книги на сайте -> Программисту -> Янг Майкл Дж. -> "Visual С++ 6. Полное руководство: В 2 т.(том2)" -> 68

Visual С++ 6. Полное руководство: В 2 т.(том2) - Янг Майкл Дж.

Янг Майкл Дж. Visual С++ 6. Полное руководство: В 2 т.(том2) — Бином, 2006. — 530 c.
Скачать (прямая ссылка): vicualcc2006t2.djvu
Предыдущая << 1 .. 62 63 64 65 66 67 < 68 > 69 70 71 72 73 74 .. 173 >> Следующая

Points [0]
V
+ Points [2]
Points [1] +
Points [3]
+ Points [5]
_j_ Points [6]
Points [4] +
Рис. 19.9. Кривая, состоящая из двух соединенных сплайнов
Режим рисования линий
Стиль, толщина и цвет линий, нарисованных с использованием описанных выше функций определяются типом пера, выбранного в текущий момент в объекте контекста устройства. В этом разделе термин линия относится либо к прямой линии, либо к кривой. На рисование линий также влияет текущий режим рисования, который описывает способ комбинирования цвета пера с текущим цветом дисплея. Окончательный цвет каждого пикселя линии зависит от текущего цвета пикселя, цвета пера и режима рисования. В стандартном режиме Windows просто копирует цвет пера на дисплей (если перо красное, каждый пиксель нарисованной линии будет окрашен красным цветом, независимо от его текущего цвета). Режим рисования можно изменить, вызвав функцию-член SetRop2 класса с dc.
int SetROP2 (int nDrawMode);
Параметр nDrawMode описывает желаемый режим рисования. Существует 16 возможных режимов рисования. Наиболее распространенные из них перечислены в табл. 19.6. Описание более сложных из них смотрите в документации на эту функцию. В таблице приведен результирующий цвет каждого пикселя линии, нарисованной в соответствии с используемым режимом рисования. Значение rc_copypen задает стандартный режим рисования.
При выборе режима рисования R2NOT линия будет нарисована цветом, инверсным по отношению к экрану. Этот метод рисования имеет несколько преимуществ. Во-первых, линия видна на экране любого цвета; во-вторых, можно использовать режим R2_not для рисования видимой линии внутри области, содержащей смесь цветов. При повторном рисовании этой же линии она автоматически удаляется, а цвет экрана восстанавливается. Этот режим можно использовать для рисования прямоугольников выборки, создания анимации и других целей.
Выбор режима r2_mot эквивалентен выбору пера null и кисти null.
Таблица 19.6. Режимы рисования, устанавливаемые вызовом функции setROP2
Значение параметра dDrawMode
Цвет каждого пикселя рисуемой фигуры
RC
COPYPEN (Стандартный режим)
Красный
Инверсный цвету пера Инверсный цвету фона Черный Белый
RC
NOTCOPYPEN
R2
NOT
R2
BLACK
R2
WHITE
R2
NOP
He изменяется
Примечание
Режим рисования также влияет на рисование границ и внутренних областей замкнутых фигур, рассматриваемых в следующем параграфе по аналогии с рисованием линий.
Режим фона и задание цвета для прерывистых линий
При рисовании прерывистых линий (использующих СТИЛИ ps_dash, ps_dot, ps_dashdot или ps_dashdotdot) цвет, используемый для закрашивания пробелов в линии, зависит от текущего режима фона и его цвета. Вспомните (гл. 18): режим фона устанавливается вызовом функции С dc: :SetBkMode.
int SetBkMode (int nBkMode);
Если аргументу nBkMode присвоено значение по умолчанию opaque, пропуски внутри линий будут закрашены текущим цветом фона. Если присвоено значение transparent, пробелы не закрашиваются (экранные цвета остаются неизменными). Цвет фона устанавливается при вызове cdc: : SetBkColor.
virtual COLORREF SetBkColor (COLORREF crColor);
Примечание
В гл. 18 рассмотрено воздействие режима и цвета фона на рисование текста. Как показано ниже, режим и цвет фона также влияют на границу вокруг фигур с замкнутым контуром, нарисованных перьями для прерывистых линий, а также на внутренние области этих фигур, нарисованных кистями со штриховкой.
Рисование замкнутых фигур
Следующие функции класса CDC позволяют рисовать фигуры с замкнутым контуром, ограничивающие одну или несколько областей поверхности экрана:
• Rectangle (прямоугольник)
• RoundRect (закругленный прямоугольник)
• Ellipse (эллипс)
• Chord (сегмент)
• Pie (сектор)
• Polygon (многоугольник)
• PolyPolygon (многоугольники)
Для рисования простого прямоугольника вызовите функцию CDC: .-Rectangle.
pDC->Rectangle (25, 50, 175, 225);
Верхний левый угол этого прямоугольника находится в точке с координатами (25, 50), а нижний правый угол - в точке (175, 225).
Закругленный прямоугольник рисуют с помощью функции CDC: :RoundRect.
BOOL RoundRect
(int xl, int yl, // левый верхний угол прямоугольника;
int х2, int у2, // правый нижний угол прямоугольника;
int хЗ, int уЗ); // размер закругляющих эллипсов
Первая пара координат, передаваемая в RoundRect, описывает позицию верхнего левого угла прямоугольника, вторая — правого нижнего угла; третья — задает ширину и высоту прямоугольника, ограничивающего эллипс, используемый для рисования закругленных углов (рис. 19.10).
Для рисования круга или эллипса вызовите функцию CDC: :Ellipse.
BOOL Ellipse
(int xl, int yl, // левый верхний угол ограничивающего
// прямоугольника; int х2, int у2); // правый нижний угол ограничивающего // прямоугольника
Первая пара координат описывает координаты верхнего левого утла прямоугольника, ограничивающего эллипс, вторая — координаты правого нижнего угла ограничивающего прямоугольника (рис. 19.11).
(х2,у2)
Рис. 19.10. Координаты, переданные в функцию RoundRect
Предыдущая << 1 .. 62 63 64 65 66 67 < 68 > 69 70 71 72 73 74 .. 173 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100