Студопедия

КАТЕГОРИИ:

АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника


Вывод информации в окно. Механизм перерисовки окна.




 

При внимательном рассмотрении можно увидеть, что экран дисплея составлен из тонких горизонтальных и вертикальных линий. На пересечении каждой горизонтальной и вертикальной линии находится точка, называемая Пикселом. Пиксел — это минимальный по размерам изобразительный элемент, которым может управлять приложение. В свою очередь, пиксел образован тремя микроточками, не различимыми невооруженным глазом, которые имеют, соответственно, красный, зеленый и синий цвета. Микроточки могут светиться с интенсивностью от 0 (отсутствие излучения) до 255 (максимальная яркость). Совокупность их свечения образует текущий цвет пиксела.

Таким образом, цвет пиксела можно рассматривать как некоторую точку в трехмерном RGB-пространстве, образованном тремя цветовыми осями: Red (красная цветовая составляющая), Green (зеленая составляющая) и Blue (синяя составляющая).
В компьютерной графике используются и другие цветовые пространства. Например, для цветных принтеров чаще используется цветовое пространство CMYK, в котором каждый цвет является комбинацией голубой, малиновой, желтой и черной составляющих.

Вывод пикселов:

Для работы с пикселами предусмотрены следующие функции:

COLORREF GetPixel(HDC hdc, int X, int Y);

BOOL SetPixelV(HDC hdc, int X, int Y, COLORREF color);

COLORREF SetPixel(HDC hdc, int X, int Y, COLORREF color);

Параметры Х и Y определяют позицию пиксела в логических единицах. Параметр color, устанавливающий цвет пиксела, обычно задается при помощи макроса RGB. Функция GetPixel возвращает цветовое значение пиксела с заданными координатами.
Функции SetPixelV и SetPixel устанавливают заданное цветовое значение пиксела, различаясь возвращаемым значением. Первая функция возвращает логическое значение, указывающее, успешно ли прошла операция. Вторая функция в случае успешного выполнения возвращает старый цвет пиксела, а если произошла какая-то ошибка, то возвращается значение -1. Хронометраж процесса выполнения этих функций показал, что процесс вывода одного пиксела требует более 1000 тактов работы процессора. Как ни странно, функция GetPixel работает еще медленнее и требует более 6000 тактов работы процессора. Поэтому, если рисование ведется посредством вывода отдельных пикселов, могут возникнуть проблемы с быстродействием программы.

Вывод текста:

Win32 GDI обеспечивает полный набор функций для форматирования и рисования текста в клиентской области окна или на бумажной странице принтера. Эти функции могут быть разделены на те, которые форматируют текст, подготавливая его для вывода, и те, которые действительно отображают текст. Форматирующие функции выравнивают текст, устанавливают межсимвольные промежутки, изменяют протяженность разделительных символов, устанавливают цвет текста и цвет фона графических элементов. Рисующие функции выводят отдельные символы или целые строки текста.

Перерисовка:

Обычно приложение рисует что-либо в окне, реагируя на сообщение WM_PAINT. Система посылает это сообщение окну во всех случаях, требующих перерисовки клиентской области окна. Например, типичными причинами генерации этого сообщения могут быть следующие события: изменились размеры или местоположение окна;
клиентская область была частично или полностью закрыта другим окном или выпадающим меню, а теперь закрывающий объект исчез; приложение вызвало одну из функций работы с полосами прокрутки. Кроме того, приложение может само инициировать посылку сообщения WM_PAINT посредством вызова одной из функций, InvalidateRect, InvalidateRgn или UpdateWindow. Функция UpdateWindow посылает сообщение WM_PAINT непосредственно в оконную процедуру, минуя очередь приложения. Работа с сообщением WM_PAINT требует от разработчика понимания общей парадигмы отображения графики на экране, которая принята в системах семейства Windows. Желательно структурировать программу таким образом, чтобы информация, необходимая для рисования в клиентской области, готовилась там, где это удобно с точки зрения реализуемого алгоритма. Но само рисование должно выполняться только тогда, когда появляется сообщение WM_PAINT. Впрочем, иногда решаемая задача диктует и другие подходы к рисованию: например, оно может выполняться при обработке сообщений от мыши или от таймера.


Поделиться:

Дата добавления: 2015-01-29; просмотров: 163; Мы поможем в написании вашей работы!; Нарушение авторских прав





lektsii.com - Лекции.Ком - 2014-2024 год. (0.012 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав
Главная страница Случайная страница Контакты