русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

SzLabel,


Дата добавления: 2015-01-16; просмотров: 507; Нарушение авторских прав


(int)strlen(szLabel)

);

return;

}

void ShadyDiagram(HDC hDC, int x, int y, int r, int iShadowDepth, const float* pData, const Brush* pBrushes, unsigned int iNumOfPies)

{

Diagram(hDC, x + iShadowDepth, y + iShadowDepth, r, true, pData, pBrushes, iNumOfPies);

Diagram(hDC, x, y, r, false, pData, pBrushes, iNumOfPies);

return;

}

 

Подробно рассмотрим ее работу. Вывод на экран осуществляется при обработке сообщения WM_PAINT:

case WM_PAINT:

hDC = BeginPaint(hWnd, &ps);

ShadyDiagram(hDC, 320, 260, 200, 10, g_data, g_pBrushes, g_iNumOfPies);

EndPaint(hWnd, &ps);

break;

 

Почему нельзя просто вывести данные в произвольном месте программы? Современные операционные системы, как правило, являются многозадачными, что означает возможность одновременной работы нескольких программ. Допустим, Вы отобразили в окне программы какой-то рисунок, потом окно частично перекрывается другим окном или полностью исчезает с экрана. Затем через некоторое время верхнее окно сдвигается. Казалось бы, операционная система должна самостоятельно восстановить пропавшую часть изображения. Увы, но это не так.

Существует взаимодействие «документ – вид», используемое при графических построениях с помощью электронных устройств. Документ представляет некие данные, невидимые для пользователя, хранимые в памяти компьютера, которые пользователь может редактировать, загружать и сохранять, используя диск. С другой стороны вид – временные данные, которые связаны с документом, и которые пользователь ассоциирует с ним. Например, текстовый документ программы «Блокнот» – массив байт, каждый байт представляет один символ, хранимый в оперативной памяти. Видом этого документа является графическое изображение на экране монитора с помощью шрифта определенного типа, размера, цвета и т.д. Вид можно всегда восстановить по данным документа, используя предопределенный программистом алгоритм, что и осуществляется при обработке сообщения WM_PAINT.



Функция BeginPaint возвращает контекст отображения для окна hWnd:

HDC WINAPI BeginPaint( HWND hWnd, PAINTSTRUCT FAR *lpps);

Перед этим функция подготавливает окно для рисования, заполняя структуру PAINTSTRUCT информацией, которую можно использовать в процессе рисования.

Контекст отображения, полученный с помощью функции BeginPaint, необходимо освободить перед завершением обработки сообщения WM_PAINT, вызвав функцию EndPaint с теми же параметрами:

void WINAPI EndPaint( HWND hWnd, PAINTSTRUCT FAR *lpps);

Функции BeginPaint и EndPaint можно использовать только внутри обработчика сообщения WM_PAINT. Если требуется рисовать при обработке других сообщений, получить контекст отображения можно с помощью функции GetDC() и освободить функцией ReleaseDC();

Функция GetDC возвращает контекст отображения для окна с идентификатором hwnd:

HDC WINAPI GetDC( HWND hWnd );

Функция ReleaseDC освобождает контекст изображения hdc, полученный для окна hwnd:

int WINAPI ReleaseDC( HWND hwnd, HDC hdc );

Каждый раз, когда приложение получает общий контекст отображения, его атрибуты получают значения по-умолчанию: белая кисть для заполнения фигур, черное перо для рисования линий и т.п. Если перед выполнением рисования приложение изменит атрибуты контекста отображения, вызвав соответствующие функции GDI, в следующий раз при получении значений эти атрибуты вновь примут значения по-умолчанию. Поэтому установка атрибутов должна выполняться каждый раз после получения общего контекста отображения.

Итак, данные в программе определяются следующим образом:

const float g_data[] = { 10.0f, 4.0f, 30.0f, 12.0f, 26.0f, 5.0f, 18.0f };



<== предыдущая лекция | следующая лекция ==>
If (g_pBrushes) | Struct Brush


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.008 сек.