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

Функции настройки цветов и палитр

Функции этой группы позволяют установить новую цветовую палитру (SelectPalette), перерисовать окно, заменяя ранее установленные цвета (UpdateColors), а также создать полутоновую кисть (GetHalftoneBrush), цвет которой получается в результате смешивания текущих цвета фона (background) и цвета, используемого для вывода текстовых строк (foreground).

Режимы рисования

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

Функция

int CDC::SetBkMode (int nBkMode)

используется для установки режима закрашивания фона. Возможные режимы задаются параметром nBkMode, который может принимать следующие значения:

  • OPAQUE – (непрозрачный) фон закрашивается текущим цветом фона при выводе текста, несплошных линий или при использовании штриховых кистей; задано по умолчанию;

  • TRANSPARENT – (прозрачный) фон не меняется.

Функция

int CDC::SetPolyFillMode(int nPolyFillMode)

используется для установки режима закрашивания многоугольников. Возможные режимы задаются параметром nPolyFillMode (рис. 3):

  • ALTERNATE – режим закрашивания внутренних областей, находящихся между первой и второй, третьей и четвертой и т.д. линиями контура; задан по умолчанию;

  • WINDING – режим, при котором закрашиваются все внутренние области.

Для установки режима рисования или заливки используется функцияSetROP2. Название функции расшифровывается как "установка режима растровых (пиксельных) операций, использующих в качестве параметров два пиксела". Такими пикселами являются соответствующие друг другу точки экрана и отображаемого объекта.

Для функции

int CDC::SetROP2(int nDrawMode)

возможные режимы задаются параметром nDrawMode, который может принимать следующие значения:

R2_BLACK

Пикселы будут черного цвета

R2_WHITE

Пикселы будут белого цвета

R2_NOP

Пикселы останутся без изменений

R2_NOT

Пикселы будут иметь инверсный по отношению к экрану цвет

R2_COPYPEN

Пикселы будут иметь цвет, заданный для текущего карандаша

R2_NOTCOPYPEN

Пикселы будут иметь инверсный цвет по отношению к цвету текущего карандаша

R2_MERGEPENNOT

Цвет пикселов получается в результате комбинирования цвета карандаша и инверсии цвета экрана ("цвет пиксела" = (NOT "цвет пиксела экрана") OR "цвет карандаша")

R2_MASKPENNOT

Цвет пикселов получается в результате комбинирования цвета карандаша и инверсии цвета экрана (''цвет пиксела" = (NOT "цвет пиксела экрана") AND "цвет карандаша")

R2_MERGENOTPEN

Цвет пикселов получается в результате комбинирования цвета экрана и инверсии цвета карандаша ("цвет пиксела" = (NOT "цвет карандаша") OR "цвет пиксела экрана")

R2_MASKNOTPEN

Цвет пикселов получается в результате комбинирования цвета экрана и инверсии цвета карандаша ("цвет пиксела" = (NOT "цвет карандаша") AND "цвет пиксела экрана")

R2_MERGEPEN

Цвет пикселов получается в результате комбинирования цвета экрана и цвета карандаша ("цвет пиксела" = "цвет карандаша" OR "цвет пиксела экрана")

R2_NOTMERGEPEN

Цвет пикселов получается в результате инверсии R2_MERGEPEN цвета ("цвет пиксела" = МОТ("цвет карандаша" OR "цвет пиксела экрана"))

R2_MASKPEN

Цвет пикселов получается в результате комбинирования цвета экрана и цвета карандаша ("цвет пиксела" = "цвет-карандаша" AND "цвет пиксела экрана")

R2_NOTMASKPEN

Цвет пикселов получается в результате инверсии R2_MASKPEN цвета ("цвет пиксела" = NOT("цвeт карандаша" AND "цвет пиксела экрана"))

R2_XORPEN

Цвет пикселов получается в результате комбинирования цвета экрана и цвета карандаша ("цвет пиксела" = "цвет карандаша" XOR "цвет пиксела экрана")

R2_NOTXORPEN

Цвет пикселов получается в результате инверсии R2_XORPEN цвета ("цвет пиксела" = NOT("4BeT карандаша" XOR "цвет пиксела экрана"))

Вышеперечисленные режимы рисования линий поддерживаются только растровыми устройствами.

Для выбора режима сжатия битовых массивов используется функция SetStretchBltMode:

Функция

int CDC::SetStretchBltMode(int nStretchMode)

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

STRETCH_ANDSCANS

или

BLACKONWHITE

Цвет пикселов получается в результате комбинирования цвета удаляемых пикселов и остающихся с использованием операции AND; для монохромных изображений черные пикселы имеют приоритет над белыми

STRETCH_DELETESCANS или COLORONCOLOR

Режим простого удаления пикселов без попыток сохранить информацию об их цвете

STRETCH_HALFTONE или HALFTONE

При сжатии цвет пикселов результирующего блока "в среднем" сохраняется

STRETCH_ORSCANS

или

WHITEONBLACK

Цвет пикселов получается в результате комбинирования цвета удаляемых пикселов и остающихся с использованием операции OR; для монохромных изображений белые пикселы имеют приоритет над черными

К этой же группе относятся функции для назначения и запроса цветов. Одни используются для цвета символов текста (функции SetTextColor и GetTextColor), а другие – для цвета фона (функции SetBkColor и GetBkColor). Цвет для символов текста используется только в случае, если текстовая строка выводится при помощи функций CDC::TextOut или CDC::ExtTextOut. Цвет фона используется для заливки промежутков несплошных линий, областей, закрашенных штрихованными кистями, а также просветов между символами текста. Для линий, выведенных с помощью карандашей, созданных с флагами PS_GEOMETRIC или PS_COSMETIC, цвет фона не используется.

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