Как начать и закончить построения непосредственно на экране
- Требуется подключить модули Windows и Graphics
Uses
Windows, Graphics; - Следует описать объект типа TCanvas, например,
var Cn: TCanvas; - В начале программы необходимо создать канву и выбрать в качестве графического устройства DC экран
Begin
Cn := TCanvas.Create; //создаём канву
Cn.Handle := GetDC(0); //выбираем экран - Чтобы завершить работу в графике надо освободить контекст и канву
ReleaseDC(0, Cn.Handle); //освобождаем контекст,
Cn.Handle := 0; //канву от контекста, - а затем полностью её удалить
Cn.Free; //разрушаем канву
Во избежание ошибок следует использовать структуры обработки ошибок
try … finally.
Удобно подключить модули Types, Forms и Dialogs, чтобы получить доступ к вспомогательным средствам.
Пример графической программы
Program Graph_on_screen;
uses //МОДУЛИ, СОДЕРЖАЩИЕ ОПИСАНИЯ:
Dialogs, //-оконных сообщений ShowMessage
Windows, //-контекста DC
Graphics, //-канвы Canvas
Types, //-прямоугольника Rect
Forms; //-параметров экрана Screen.Width
//Screen.Height, Application
var //ПЕРЕМЕННЫЕ:
Cn: TCanvas; //для формирования канвы
R:TRect; //рабочая область экрана
MyRgn: HRGN; //чтобы выделить область экрана
P:TPoint; //чтобы найти координаты мыши
k:Integer; //чтобы узнать о нажатии пробела
x0:Integer=400; y0:Integer=200; //Начало области экрана,
x1:Integer=400+400; y1:Integer=200+400; //конец области
Begin
Cn := TCanvas.Create; //Формирование полотна (канвы)
Try
Cn.Handle := GetDC(0); //Задание устройства (экран)
Try
R:=Rect(x0,y0,x1,y1); //Область экрана
MyRgn := CreateRectRgn(x0,y0,x1,y1);//Дубль области экрана
SelectClipRgn(Cn.Handle,MyRgn); //Разрешение рисовать в области
//-------------------------
Repeat //1. ЦИКЛ ПЕРЕРИСОВКИ КАРТИНКИ
//-------------------------
Windows.SleepEx(100, False); //Пауза 100 мили секунд
//-------------------------
Cn.Brush.Color:=clRed; //Цвет заливки
Cn.Brush.Style:=bsSolid; //Стиль заливки
Cn.FillRect(R); //Заливка области кистью
//-------------------------
Cn.Pen.Color:=clBlue; //Цвет линии
Cn.Pen.Style:=psSolid; //Стиль линии
Cn.Pen.Width:=4; //Толщина линии
Cn.MoveTo(R.Left,R.Top); //Курсор в начало линии
Cn.LineTo(R.Right,R.Bottom); //Прорисовка линии до конца
//-------------------------
Cn.Brush.Color:=clGreen; //Цвет фона текста
//Cn.Brush.Style:=bsClear; //Чтобы убрать фон текста
Cn.Font.Color:=clYellow; //Цвет текста
Cn.Font.Size:=14; //Размер текста
Cn.Font.Style:=[fsBold]; //Жирный шрифт
Cn.TextOut(R.Left+4,R.Top+16,'Привет ');//Вывод текста
//-------------------------
k:=GetKeyState(32); //Получение статуса "пробела"
GetCursorPos(P); //Получение координат мыши
Until (k<0) Or //Конец, если нажат пробел
((Abs(P.x-R.Left-44-4)<44) And//или мышь в зоне текста
(Abs(P.y-R.Top-16-16)<16));
//-------------------------
Application.Title:='Рисование на экране'; //Изменение заголовка
ShowMessagePos('Работа Завершена',x1,y0); //Вывод сообщения
Finally
ReleaseDC(0, Cn.Handle); //Освобождение контекста
Cn.Handle := 0; //и канвы
End;
finally //Удаление канвы
Cn.Free;
End;
End.
Билет №23,24:
Графические примитивы
Что такое графический примитив
ü это простейшая геометрическая фигура, вычерчиваемая одним оператором
ü примитив представляет собой либо простую кривую линию, либо замкнутую линию вместе с ограниченной частью плоскости
ü обычно линия вычерчивается пером, а внутренняя часть закрашивается кистью
ü цвет линии определяется свойством пера, а цвет закраски – свойством кисти
ü примитив может выходить за пределы экрана
Как строится примитив
Примитив строится оператором, который является методом канвы и определяет геометрические параметры фигуры. Цвет, стиль и другие характеристики «чертёжных инструментов» задаются свойствами пера и кисти.
На рисунке приводятся допустимые стили инструментов и показаны результаты их применения. В правом столбце представлены имена основных операторов.