WithForm1.canvas do
Begin
Repaint;
Pen.Width:=1;
CaseComboBox1.ItemIndex of
0:Pen.Style:=psSolid;
1:Pen.Style:=psDash;
2:Pen.Style:=psDot;
3:Pen.Style:=psDashDot;
4:Pen.Style:=psDashDotDot;
5:Pen.Style:=psClear;
6:Pen.Style:=psInsideFrame;
end;
MoveTo(0,100); LineTo(100,100);
end;
end;
Наша небольшая подпрограмма проводит линию из точки с координатами (0,100) в точку (100,100), стиль линии назначается в элементе управления ComboBox1. Режим прорисовки линии на холсте определяется свойством:
propertyMode: TPenMode;
typeTPenMode = (pmBlack, pmWhite, pmNop, pmNot, pmCopy, pmNotCopy, pmMergePenNot, pmMaskPenNot, pmMergeNotPen, pmMaskNotPen, pmMerge, pmNotMerge, pmMask, pmNotMask, pmXor, pmNotXor);
Представление цветной линии в таком случае определяется не только цветом пера, но и цветом области холста, по которой проходит линия. В Delphi предложено 16 стандартных режимов взаимодействия цветов линии и холста. В терминах функций Windows API режимы смешивания цветов линии и холста называются ROP2-кодами. ROP2-код обеспечивает поразрядную логическую операцию (сложение, вычитание и т. д.) между пикселами пера и пикселами поверхности, именуемую бинарной растровой операцией (binary raster operation).
Кисть – класс TBrush
Класс TBrush предназначен для
описания способа заливки областей и называется кистью. Кисть представляет собой битовый образ. При закрашивании области
образ заполняет ее границы в вертикальном и горизонтальном направлениях. Стандартные стили штриховки (рис. 10.4) собраны в свойстве Style:
propertyStyle : TBrushStyle;
typeTBrushStyle = (bsSolid, bsClear, bsHorizontal, bsVertical, bsFDiagonal,
bsBDiagonal, bsCross, bsDiagCross);
За цвет заливки отвечает свойство:
propertyColor: TColor;
Для создания собственной кисти необходимо загрузить битовый шаблон
в свойство:
propertyBitmap: TBitmap;
Приведем пример, в котором для заливки рабочей поверхности формы используется стандартный файл .bmp из каталога Windows:
varBitmap: TBitmap;
Begin
Bitmap := TBitmap.Create;
Bitmap.LoadFromFile('c:\windows\Волны.bmp');
Form1.Canvas.Brush.Bitmap := Bitmap;
Form1.Canvas.FillRect(Rect(0,0,Form1.Width,Form1.Height));
Form1.Canvas.Brush.Bitmap := nil;
Bitmap.Free;
end;
Дата добавления: 2016-03-15; просмотров: 600;