|
|
Определяет графическую канву (поверхность) для рисования.
Доступ к объекту
Доступ к объекту выполняется через визуальные компоненты, имеющие свойство Canvas. Например:
frm=new TForm();
...
cnvObj=frm.Canvas;
Собственные свойства
|
Свойство
| Тип
| Описание
|
Brush
| TBrush
| дескриптор кисти канвы
|
CopyMode
| Enum
| режим копирования изображений (см. ниже)
|
Font
| TFont
| дескриптор шрифта канвы
|
Pen
| TPen
| дескриптор пера канвы
|
PenPos
| TPoint
| текущая позиция пера
|
Pixels[][]
| TColor
| индексированная таблица точек канвы
|
TextFlags
| Enumset
| флаги отображения текста (см. ниже)
|
Только чтение
| [TYPE]
| [DESC]
|
CanvasOrientation
| Enum
| ориентация канвы (см. ниже)
|
ClipRect
| TRect
| прямоугольник отсечения канвы
|
Handle
| Number
| дескриптор канвы Windows GDI
|
LockCount
| Number
| счетчик блокировок канвы для эксклюзивного использования
|
|
Свойство CopyMode
|
Значение
| Описание
|
cmBlackness
| заполнить канву черным цветом
|
cmDstInvert
| заполнить канву инвертированным цветом фона
|
cmMergeCopy
| объединить изображения операцией AND
|
cmMergePaint
| объединить изображения операцией OR
|
cmNotSrcCopy
| копировать инвертированное изображение источника
|
cmNotSrcErase
| объединить изображения операцией OR, затем инвертировать результат
|
cmPatCopy
| копировать изображение-источник
|
cmPatInvert
| объединить изображения операцией XOR
|
cmPatPaint
| объединить изображения операцией OR, затем результат и изображение на канве вновь объединить операцией OR
|
cmSrcAnd
| объединить изображения операцией AND
|
cmSrcCopy
| копировать изображение-источник
|
cmSrcErase
| инвертировать изображение на канве, затем объединить результат с изображением источника
|
cmSrcInvert
| объединить изображения операцией XOR
|
cmSrcPaint
| объединить изображения операцией OR
|
cmWhiteness
| заполнить канву белым цветом
|
|
Свойство TextFlags
|
Значение
| Описание
|
ETO_CLIPPED
| ограничить текст прямоугольником отсечения канвы
|
ETO_GLYPH_INDEX
| отменить обработку текста языковым драйвером Windows
|
ETO_NUMERICSLATIN
| отображать цифры латинскими символами
|
ETO_NUMERICSLOCAL
| отображать цифры в соответствии с региональными настройками Windows
|
ETO_OPAQUE
| очистить фон под символами текста
|
ETO_RTLREADING
| вывести текст справа налево
|
|
Свойство CanvasOrientation
|
Значение
| Описание
|
coLeftToRight
| слева направо
|
coRightToLeft
| справа налево
|
|
Собственные методы
|
Метод
| Описание
|
Arc
| рисует дугу эллипса (окружности)
|
Chord
| рисует закрашенную замкнутую фигуру, ограниченную дугой эллипса (окружности) и хордой
|
CopyRect
| копирует прямоугольную часть изображения
|
Draw
| выводит изображение в указанную точку с указанной прозрачностью
|
DrawFocusRect
| рисует пунктирный прямоугольник в режиме XOR
|
Ellipse
| рисует закрашенный эллипс (окружность)
|
FillRect
| закрашивает указанный прямоугольник текущей кистью
|
FloodFill
| закрашивает замкнутую область текущей кистью
|
FrameRect
| рисует прямоугольник цветом текущей кисти
|
Line
| рисует линию из начальной точки в конечную
|
LineTo
| рисует линию из текущей позиции пера в новую позицию
|
Lock
| блокирует канву для эксклюзивного использования
|
MoveTo
| перемещает перо в новую позицию
|
Pie
| рисует закрашенный сектор эллипса (окружности)
|
PolyBezier
| рисует сглаженную кривую по указанным опорным точкам
|
Polygon
| рисует замкнутую фигуру с кусочно-линейной границей
|
Polyline
| рисует кусочно-линейную линию
|
Rectangle
| рисует прямоугольник текущим пером
|
Refresh
| немедленно перерисовывает изображение на канве
|
RoundRect
| рисует закрашенный прямоугольник с закругленными углами
|
SetBkMode
| устанавливает указанный режим фона
|
StretchDraw
| выводит указанное изображение в указанный прямоугольник
|
TextHeight
| возвращает высоту указанной текстовой строки
|
TextOut
| выводит указанную текстовую строку в указанной позиции
|
TextWidth
| возвращает ширину указанной текстовой строки
|
TryLock
| выполняет попытку блокировки канвы для эксклюзивного использования
|
Unlock
| уменьшает счетчик блокировок канвы
|
|
Стандартные методы
var dx=15,dy=15;
// Главная форма frm=new TForm(); frm.Caption="JS+ - базовый компонент TCanvas";
// Строка состояния stb=new TStatusBar(frm); stb.SimpleText=" Пример компонента TCanvas";
// Панель pnl=new TPanel(frm); pnl.BorderStyle=bsSingle; pnl.ClientWidth =dx*35+2; pnl.ClientHeight=dy*22+2; pnl.Color=clWhite;
// Подогнать размер формы под размер панели frm.ClientWidth =pnl.Width; frm.ClientHeight=pnl.Height+stb.Height;
// Изображение img=new TImage(pnl); img.SetBounds(1,1,pnl.ClientWidth-2,pnl.ClientHeight-2); cnv=img.Canvas; cnv.Brush.Color=pnl.Color; cnv.FillRect(cnv.ClipRect);
// Таймер tmr=new TTimer(frm); tmr.Interval=20; tmr.Enabled=true; tmr.OnTimer=tmr_Timer;
frm.ShowModal();
// Обработчик события OnTimer function tmr_Timer(tmr) { var clr,rct=cnv.ClipRect; var x=Math.round((rct.Width() *Math.random())/dx); var y=Math.round((rct.Height()*Math.random())/dy);
switch (Math.rand(10)) { case 0: clr=clRed; break; case 2: clr=clGreen; break; case 4: clr=clBlue; break; case 6: clr=clTeal; break; case 8: clr=clFuchsia; break; default: clr=pnl.Color; }
x*=dx; y*=dy; cnv.Pen.Color=cnv.Brush.Color=clr; cnv.Ellipse(x,y,x+dx,y+dy); }
|
Примечание
Для исключения конфликтов с системой отрисовки Windows рисование на канве следует выполнять в следующих случаях:
-
| в процессе обработки события OnPaint: для любых компонентов, имеющих свойство Canvas;
| -
| в любое время: для компонентов, самостоятельно сохраняющих состояние канвы, например TImage.
|
Совместимость
C++ Builder/Delphi
|
JS+ | Руководство пользователя
|
|
|
|
|
|