JS+
Усиленный язык сценариев для Windows
с возможностью встраивания
в ваши приложения
О языке JS+ Справочник Скачать JS+ DLL
Контакты
СПРАВОЧНИК ПО ЯЗЫКУ JS+ Содержание

TCanvas

- базовый компонент
Базовые компоненты JS+
Определяет графическую канву (поверхность) для рисования.

Доступ к объекту
Доступ к объекту выполняется через визуальные компоненты, имеющие свойство Canvas. Например:

frm=new TForm();
...

cnvObj=frm.Canvas;

Собственные свойства
Свойство Тип Описание
Brush TBrush дескриптор кисти канвы
CopyMode Enum режим копирования изображений (см. ниже)
Font TFont дескриптор шрифта канвы
Pen TPen дескриптор пера канвы
PenPos TPoint текущая позиция пера
Pixels[][] TColor индексированная таблица точек канвы
TextFlags Enumset флаги отображения текста (см. ниже)
Только чтение
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 уменьшает счетчик блокировок канвы

Стандартные методы

Пример (JS+)
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+Руководство пользователя
Адрес этой страницы: http://jsplus.ru/MANUAL/JSPlus/Component/Base/TCanvas.htm
© 2024,