КАТЕГОРИИ:
АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Рисование геометрических фигур. Графические инструменты. Управление цветом. Палитры цветов.
Любая линия рисуется в Windows с использованием графического объекта, называемого пером. Контекст устройства содержит перо по умолчанию — сплошное перо черного цвета толщиной 1 пиксел. Текущая позиция пера является одним из атрибутов контекста устройства. Она определяется значением типа POINT. По умолчанию текущая позиция пера установлена в точку (0, 0). Если нужно изменить текущую позицию, вызывается функция MoveToEx. SetPixel устанавливает заданный цвет в точке с указанными координатами: BOOL LineTo(hDC, int x, int y); Функция рисует линию от текущей позиции до места, указанного в аргументах. Чтобы изменить тип линии (толщину, стиль)- меняется тип пера. BOOL Arc(hDC, int left, int top, int right, int bottom, int x1, int y1, int x2, int y2); Первые четыре аргумента - левый верхний и правый нижний углы прямоугольника, в который вписан эллипс. Остальные значения - координаты точек, от которых будут проведены прямые к центру эллипса. В местах пересечения первой и второй прямой с радиусом эллипса, начинается и кончается дуга. BOOL Rectangle(hDC, int left, int top, int right, int bottom); // Прямоугольник. По умолчанию прозрачный, а вообще, тип его заливки определяется текущей кистью. По умолчанию она тоже прозрачная. Аргументы - это координаты левого верхнего и правого нижнего углов. BOOL RoundRect(hDC, int left, int top, int right, int bottom, int width, int height); Закруглённый прямоугольник. Первые пять параметров совпадают с параметрами предыдущей фукнции. Далее width и height задают ширину и высоту эллипса, дуги которого ограничивают прямоугольник. Создать кисть можно с помощью функции CreateSolidBrush : HBRUSH WINAPI CreateSolidBrush(COLORREF clrref); В качестве параметра для этой функции необходимо указать цвет кисти. Для выбора цвета вы можете воспользоваться, например, макрокомандой RGB, позволяющей указать содержание отдельных цветовых компонент. После использования созданной вами кисти ее следует удалить, не забыв перед этим выбрать в контекст отображения старую кисть. Для удаления кисти следует использовать макрокоманду DeleteBrush : #define DeleteBrush(hbr) DeleteObject((HGDIOBJ)(HBRUSH)(hbr))
Управление цветом: Пиксел — это минимальный по размерам изобразительный элемент, которым может управлять приложение. В свою очередь, пиксел образован тремя микроточками, не различимыми невооруженным глазом, которые имеют, соответственно, красный, зеленый и синий цвета. Микроточки могут светиться с интенсивностью от 0 (отсутствие излучения) до 255 (максимальная яркость). Совокупность их свечения образует текущий цвет пиксела. Таким образом, цвет пиксела можно рассматривать как некоторую точку в трехмерном RGB-пространстве, образованном тремя цветовыми осями: Red (красная цветовая составляющая), Green (зеленая составляющая) и Blue (синяя составляющая). Цветовая палитра представляет собой таблицу (массив) цветов, которые способно воспроизвести устройство. Вход в таблицу для доступа к каждому цвету осуществляется по индексу. В Win32 GDI используется несколько типов палитр. Системная палитра (system palette) определяет все цвета, которые могут быть одновременно отображены устройством. Диапазон цветов зависит от аппаратной палитры, реализуемой видеоадаптером, и от настроек экрана. Приложение не может непосредственно модифицировать системную палитру. Системная палитра обычно содержит 256 элементов (входов), из которых 20 зарезервировано для так называемых статических цветов, которые никогда не изменяются. Эти цвета используются всеми приложениями для вывода меню, кнопок, фона окна, текстовых надписей и других элементов стандартного интерфейса. Логическая палитра(logical palette) — это палитра уровня приложения. Она создается приложением и закрепляется за контекстом устройства. Логическая палитра позволяет определять и использовать цвета, которые соответствуют потребностям приложения. После создания логической палитры с помощью функции CreatePalette или CreateHalftonePalette она должна быть реализована вызовом функции ReaHzePalette.
|