- •Синхронизация процессов и цепочек
- •Венгерская нотация, ссылки и ресурсы
- •Стандартные кисти, иконки, курсоры
- •Пример:
- •Введение в ресурсы
- •Курсоры, пиктограммы и растровые изображения
- •Работа с текстом
- •Работа с мышью
- •Ресурс панель диалога
- •Основные понятия машинной графики
- •Рассмотрим такие примитивы, как вершина, отрезок, воксель и модели, строящиеся на их основе, а также функциональные модели. Полигональные модели
- •Воксельные модели
- •Поверхности свободных форм (функциональные модели)
- •Проекции
- •Различают следующие проекции.
- •Алгоритм Коэна - Сазерленда отсечения прямоугольной областью
- •Метод дихотомии
- •Задача удаления невидимых линий и поверхностей
- •Удаление нелицевых граней многогранника. Алгоритм Робертса
- •Алгоритм Варнока
- •Алгоритм Вейлера-Азертона
- •Метод z-буфера
- •Методы приоритетов. Алгоритм художника.
- •Алгоритм плавающего горизонта
- •Алгоритмы построчного сканирования для криволинейных поверхностей
- •Библиотека OpenGl
- •Простейшая программа
- •Создание формы
- •Формат пикселя
- •Вершины и система координат
- •Треугольники
- •Многоугольники
- •Область рисования
- •Преобразование координат. Матрицы
- •Видовое преобразование. Масштабирование, поворот и перенос
- •Параметры вида. Перспективная проекция
- •Буфер глубины
- •Надстройки над OpenGl
- •Источник света
- •Свойства материала и модель освещения
- •Отсечение
- •Анализ алгоритмов. Модель вычислений
- •Асимптотический анализ алгоритмов
- •Анализ рекурсивных алгоритмов
- •Метод заметающей прямой
- •Метод локусов. Задачи геометрического поиска
- •Задачи регионального поиска. Многомерное двоичное дерево
- •Задачи локализации точки. Метод луча
- •Локализация точки на планарном подразбиении. Метод полос
- •Некоторые основные понятия вычислительной геометрии
- •Построение звездчатого полигона
- •Предварительная разработка алгоритма построения выпуклой оболочки на плоскости
- •Метод обода Грэхема
- •Триангуляция Делоне
- •Диаграмма Вороного
- •Построение диаграммы Вороного
- •Модель osi
- •Уровни модели tcp/ip
Пример:
var Win:hWnd; DC: hDC; Brush, Brush1: hBrush; Pen, Pen1: hPen;
Begin
…DC:=GetDC(Win);
Pen:=GetStockObject(Black_Pen);
SelectObject(MyDC,Pen);
Brush:=GetStockObject(LtGray_Brush);
SelectObject(MyDC,Brush);
Rectangle(MyDC,50,50,100,100);
DC: Идентификатоp контекста устpойства.
X1, Y1: Веpхний левый угол пpямоугольника.
X2, Y2: Пpавый нижний угол пpямоугольника.
Pen1:=CreatePen(ps_Solid,1,RGB(0,0,0));
Brush1:=CreateHatchBrush(hs_FDiagonal,RGB(0,255,0));
SelectObject(MyDC,Pen1);
SelectObject(MyDC,Brush1);
Ellipse(MyDC,150,50,200,100);
DC: Идентификатоp контекста устpойства.
X1, Y1: Веpхний левый угол огpаничивающего пpямоугольника.
X2, Y2: Пpавый нижний угол огpаничивающего пpямоугольника.
…end;
Введение в ресурсы
Ресурсы позволяют размещать видимые и логические элементы программ, такие как меню, таблицы строк и растровые изображения в специальных файлах, которые затем могут быть присоединены к программе. Обычно ресурсы создаются при помощи редактора ресурсов WORKSHOR.EXE. Файлы ресурсов могут иметь два типа расширения: неоткомпилированная версия, называемой файлом описания ресурсов (расширение .rc) и откомпилированная версия (с расширением .res). Для подключения файла ресурсов в программе используется следующая директива компилятора: {$R имя файла ресурсов}.
Курсоры, пиктограммы и растровые изображения
Курсоры хранятся в файлах с расширением .CUR или совместно с другими ресурсами в файлах с расширением .RES, .rc. Курсор, который будет использоваться для окон данного класса, задается при создании класса с помощью функции LoadCursor. Можно изменять тип курсора во время работы приложения функцией SetCurcsor. В качестве параметра ей указывается ссылка на курсор. Вызов этой функции производится при обработке сообщения wm_MouseMove или выбора некоторого пункта меню. Существует несколько стандартных курсоров, описанных ранее.
Аналогично используются пиктограммы и растровые изображения.
LoadIcon |
LoadBitmap |
загрузка и возврат ссылки |
DrawIcon |
BitBit |
отображение в рабочей области окна |
|
PatBit |
заполнение шаблоном фона рабочей области |
Пример.
{Выбор курсора, пиктограммы и битового образа}
{$R cur_ico}
uses WinTypes, WinProcs;
var
Wnd: HWnd;
Msg: TMsg;
hBit:HBITMAP;
function W1(Wnd: hWnd; iMessage, wParam: Word; lParam: LongInt): LongInt; export;
var PaintStruct: TPaintStruct;
DC, hmdc : hDC;
bm :hBITMAP ;
begin
case iMessage of
WM_Paint:
begin
DC:=BeginPaint(Wnd, PaintStruct);
TextOut(DC,50,10,'Новые курсор и пиктограмма',26);
hmdc:=CreateCompatibleDC(DC); {создает контекст в памяти, совместимый с контекстом окна}
bm:=SelectObject(hmdc,hBit);
BitBit(DC,10,100,64,64,hmdc,0,0,SRCCOPY);{копирует образ из памяти на экран}
SelectObject(hmdc,bm);
DeleteDC(hmdc);
ReleaseDC(Wnd,DC);
EndPaint(Wnd,PaintStruct);
end;
WM_Destroy:
begin
PostQuitMessage(0);
exit;
end;
end;
W1 := DefWindowProc(Wnd, iMessage, wParam, lParam);
end;
procedure Register;
var
WndClas: TWndClass;
begin
if hPrevInst <> 0 then Exit;
WndClas.Style := CS_HReDraw or CS_VReDraw;
WndClas.lpfnWndProc:= @W1;
WndClas.cbClsExtra := 0;
WndClas.cbWndExtra := 0;
WndClas.hInstance := HInstance;
WndClas.hIcon := LoadIcon(hInstance, 'New_Ico');
WndClas.hCursor := LoadCursor(hInstance, 'New_Cur');
WndClas.hbrBackground := GetStockObject(white_Brush);
{WndClas.hbrBackground := CreatePatternBrush(hBit); - эта строка заполняет фон окна bitmap}
WndClas.lpszMenuName := '';
WndClas.lpszClassName := 'Class1';
if not RegisterClass(WndClas) then
begin
MessageBox(GetFocus, 'Can not Register Class', 'Error ', MB_OK);
Halt;
end;
end;
procedure WinMain;
begin
hBit:=LoadBitmap(hInstance,'New_Bit');
{получаем идентификатор битового образа}
Register;
Wnd:=CreateWindow('Class1','Главное окно',WS_OverLappedWindow, 0, 0, 400, 200, 0, 0,hPrevInst, nil);
ShowWindow(Wnd, CmdShow);
UpDateWindow(Wnd);
while GetMessage(Msg, 0, 0, 0) do
begin
TranslateMessage(msg);
DispatchMessage(msg);
end;
end;
begin
WinMain;
end.
