Как начать и закончить построения непосредственно на экране

  1. Требуется подключить модули Windows и Graphics
    Uses
    Windows, Graphics;
  2. Следует описать объект типа TCanvas, например,
    var Cn: TCanvas;
  3. В начале программы необходимо создать канву и выбрать в качестве графического устройства DC экран
    Begin
    Cn := TCanvas.Create;
    //создаём канву
    Cn.Handle := GetDC(0); //выбираем экран
  4. Чтобы завершить работу в графике надо освободить контекст и канву
    ReleaseDC(0, Cn.Handle); //освобождаем контекст,
    Cn.Handle := 0; //канву от контекста,
  5. а затем полностью её удалить
    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:

Графические примитивы

 

Что такое графический примитив

ü это простейшая геометрическая фигура, вычерчиваемая одним оператором

ü примитив представляет собой либо простую кривую линию, либо замкнутую линию вместе с ограниченной частью плоскости

ü обычно линия вычерчивается пером, а внутренняя часть закрашивается кистью

ü цвет линии определяется свойством пера, а цвет закраски – свойством кисти

ü примитив может выходить за пределы экрана

 

Как строится примитив

Примитив строится оператором, который является методом канвы и определяет геометрические параметры фигуры. Цвет, стиль и другие характеристики «чертёжных инструментов» задаются свойствами пера и кисти.

На рисунке приводятся допустимые стили инструментов и показаны результаты их применения. В правом столбце представлены имена основных операторов.