![]() Студопедия КАТЕГОРИИ: АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Компонент Канва (класс TCanvas) ⇐ ПредыдущаяСтр 5 из 5
Класс создает Канву – холст для рисования (поверхность для рисования). Рисование выполняется с помощью свойств и методов, входящих в класс TCanvas. Свойства: Brush:TBrush – кисть; Pen:TPen – перо; Font:TFont – шрифт; PenPos:TPoint – определяет текущее положение пера над холстом в пикселях относительно левого верхнего угла; CopyMode:TCopyMode – способ взаимодействия растрового изображения с цветом фона, используется при копировании части канвы на другую методом CopyRect: cmBlackness – заполнение черным цветом, cmDestInvert – заполнение инверсным фоном, cmSrcCopy – копирует изображение источника на канву и т.д.; Pixels[X,Y:Integer]:TColor – массив пикселей канвы. Методы: procedure MoveTo(X,Y:Integer) – перемещает перо в указанную точку; procedure LineTo(X,Y:Integer)– чертит линию из текущей точки в заданную; procedure Rectangle(X1, Y1, X2, Y2: Integer)– рисует и закрашивает кистью прямоугольник; procedure Polyline(Points:array of TPoint)– рисует ломаную линию; procedure Polygon(Points: array of TPoint)– рисует и закрашивает кистью многоугольник; procedure Ellipse(X1, Y1, X2, Y2: Integer)– рисует эллипс в заданном прямоугольнике и закрашивает кистью; procedure FrameRect(const Rect:TRect) – очерчивает границы прямоугольника текущей кистью без заполнения; procedure Arc(X1,Y1,X2,Y2,X3,Y3, X4,Y4:integer) – чертит дугу эллипса в прямоугольнике (X1,Y1,X2,Y2), направление – против часовой стрелки; procedure Chord(X1,Y1,X2,Y2,X3,Y3, X4,Y4:integer) – чертит сегмент эллипса в прямоугольнике (X1,Y1,X2,Y2), направление – против часовой стрелки; procedure Pie(X1,Y1,X2,Y2,X3,Y3, X4,Y4:integer) – чертит сектор эллипса в прямоугольнике (X1,Y1,X2,Y2), направление – против часовой стрелки; procedure RoundRect(X1,Y1,X2,Y2, X3,Y3:integer) – чертит и заполняет прямоугольник с закругленными краями procedure FillRect(const Rect: TRect)– закрашивает кистью прямоугольник, включая левую и верхнюю границы. type TRect = record case Integer of 0: (Left, Top, Right, Bottom: Integer); 1: (TopLeft, BottomRight: TPoint); end; procedure FloodFill(X,Y:Integer;Color:TColor;FillStyle:TFillStyle)– заливка области, зависит от типа TFillStyle.
type TFillStyle = (fsSurface,fsBorder); • FillStyle=fsBorder -заливка области с границей цвета Color; • FillStyle=fsSurface - заливка области цвета Color цветом, определенным кистью. procedure TextOut(X,Y:Integer; const Text:string)– вывод строки текста шрифтом TFontв прямоугольник с верхним левым. углом в точке (X,Y); function TextExtent(Const Text:String):TSize – возвращает ширину и высоту прямоугольника, охватывающего текстовую строку Text; function TextWidth(Const Text:string):Integer – возвращает ширину прямоугольника, охватывающего текстовую строку; 5.3 Пример построения графического изображения В качестве примера рассмотрим реализациюфрагмента графического редактора, который рисует на форме закрашенный прямоугольник. Для рисования закрашенного прямоугольника необходимо отметить первый угол нажатием левой кнопки мыши. Второй угол фиксируется в момент отпускания левой кнопки. Пока кнопка нажата, за курсором мыши должен тянуть контур.
Рисунок 10 – Вид основной формы редактора program Draw; uses Forms, MainUnit in 'MainUnit.pas' {MainForm}; {$R *.RES} begin Application.Initialize; Application.CreateForm (TMainForm, MainForm); Application.Run; end.
unit MainUnit; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls; type TMainForm = class(TForm) ImagePole:TImage; {поле рисования} ExitButton: TButton; {кнопка выхода} procedure FormActivate(Sender: TObject); procedure ImagePoleMouseDown(Sender: TObject; Button: TMouseButton;Shift: TShiftState; X, Y: Integer); {установка начальной точки} procedure ImagePoleMouseMove(Sender: TObject; Shift: TShiftState; X, Y:Integer);{тянем контур, пока мышь движется с нажатой кнопкой} procedure ImagePoleMouseUp(Sender: TObject; Button: TMouseButton;Shift: TShiftState; X,Y:Integer ); {завершаем рисование прямоугольника} procedure ExitButtonClick(Sender: TObject); end;
var MainForm: TMainForm;
implementation Var Rect:TRect;first:boolean; {$R *.DFM}
procedure TMainForm.FormActivate(Sender: TObject); begin ImagePole.Canvas.Brush.Color:=clWhite end; {Установка белого цвета фона} end;
procedure TMainForm.ImagePoleMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin {Координаты первой точки} if Button=mbLeft then begin Rect.Left:=x; Rect.Top:=y; first:=true; end; end;
procedure TMainForm.ImagePoleMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin if ssLeft in Shift then begin if first then first:=not first else begin ImagePole.Canvas.Pen.Color:=clWhite; {Белое перо} ImagePole.Canvas.Rectangle(Rect.Left,Rect.Top, Rect.Right,Rect.Bottom);{Стираем} end; Rect.Right:=X; {Меняем координаты} Rect.Bottom:=Y; ImagePole.Canvas.Pen.Color:=clBlack;{Черное перо} ImagePole.Canvas.Rectangle(Rect.Left,Rect.Top, Rect.Right,Rect.Bottom);{Рисуем} end; end;
procedure TMainForm.ImagePoleMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X,Y:Integer); begin if Button=mbLeft then begin ImagePole.Canvas.Pen.Color:=clWhite; {Белое перо} ImagePole.Canvas.Rectangle(Rect.Left,Rect.Top, Rect.Right,Rect.Bottom); {Стираем} Rect.Right:=X;{Меняем координаты} Rect.Bottom:=Y; ImagePole.Canvas.Brush.Color:=clRed; {Красная кисть} {Рисуем последний вариант - красный прямоугольник} ImagePole.Canvas.FillRect(Rect); ImagePole.Canvas.Pen.Color:=clBlack; {Черное перо} end; end;
procedure TMainForm.ExitButtonClick(Sender: TObject); begin Close; end;
end.
|
||
Последнее изменение этой страницы: 2018-04-12; просмотров: 265. stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда... |