• Что бы вступить в ряды "Принятый кодер" Вам нужно:
    Написать 10 полезных сообщений или тем и Получить 10 симпатий.
    Для того кто не хочет терять время,может пожертвовать средства для поддержки сервеса, и вступить в ряды VIP на месяц, дополнительная информация в лс.

  • Пользаватели которые будут спамить, уходят в бан без предупреждения. Спам сообщения определяется администрацией и модератором.

  • Гость, Что бы Вы хотели увидеть на нашем Форуме? Изложить свои идеи и пожелания по улучшению форума Вы можете поделиться с нами здесь. ----> Перейдите сюда
  • Все пользователи не прошедшие проверку электронной почты будут заблокированы. Все вопросы с разблокировкой обращайтесь по адресу электронной почте : info@guardianelinks.com . Не пришло сообщение о проверке или о сбросе также сообщите нам.

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

Lomanu4 Оффлайн

Lomanu4

Команда форума
Администратор
Сообщения
1,164
Симпатии
222
Баллы
155
VK
Класс TCanvas — сердцевина графической подсистемы Delphi (Lazarus). Он объединяет в себе и "холст" (контекст конкретного устройства GDI), и "рабочие инструменты" (перо, кисть, шрифт) и даже "подмастерьев" (набор функций по рисованию типовых геометрических фигур).

Канва не является компонентом, но она входит в качестве свойства во многие другие компоненты, которые должны уметь нарисовать себя и отобразить какую-либо информацию.

Для рисования канва включает в себя шрифт, перо и кисть:
Код:
(рb) property Font: TFont ;  {TFont: Charset, Color, Style, Size}
(Pt) property Pen: TPen; {TPen: Color, Mode, Style, Width}
(Рb) property Brush: TBrush;  {TBrush: Bitmap, Color, Style}
Кроме того, можно рисовать и поточечно, получив доступ к каждому пикселу. Значение свойства

property Pixels[X, Y: Integer]: TColor;

соответствует цвету точки с координатами (X,Y).

Класс TCanvas
Код:
procedure Arc (X1, Y1, X2, Y2, XЗ, Y3, X4, Y4: Integer);
Метод рисует сегмент эллипса. Эллипс определяется описывающим прямоугольником (X1,Y1) — (X2,Y2). Начальная точка сегмента лежит на пересечении эллипса и луча, проведенного из его центра через точку (X3,Y3). Конечная точка сегмента лежит на пересечении эллипса и луча, проведенного из его центра через точку (X4,Y4). Сегмент рисуется против часовой стрелки.
Код:
procedure Chord(X1, Y1, X2, Y2, XЗ, Y3, X4, Y4: Integer);
Рисует хорду и заливает отсекаемую ею часть эллипса. Эллипс, начальная и конечная точки определяются, как в методе Arc.
Код:
procedure Ellipse(X1, Y1, X2, Y2: Integer);
Рисует и закрашивает эллипс, вписанный в прямоугольник (X1,Y1) — (X2,Y2).
Код:
procedure StretchDraw(const Rect: TRect; Graphic: TGraphic);
Осуществляет рисование объекта Graphic в заданном прямоугольнике Rect. Если размеры их не совпадают, Graphic масштабируется.
Код:
procedure FloodFill(X, Y: Integer; Color: TColor; FillStyle: TFillStyle); TFillStyle = (fsSurface, fsBorder);
Производит заливку области текущей кистью. Процесс начинается с точки (X,Y). Если режим FillStyle равен fsSurface, то он продолжается до тех пор, пока есть соседние точки с цветом Color. В режиме fsBorder закрашивание, наоборот, прекращается при выходе на границу с цветом Color.
Код:
property PenPos: TPoint;
Содержит текущую позицию пера канвы (изменяется посредством метода MoveTo).

Пример
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
  with Paintbox1.Canvas do begin
    Brush.Color := clGray;
    Rectangle(10,100,250,300);  // корпус
    Polygon([Point(0,100),Point(130,20),Point(260,100)]); // крыша
    Brush.Color := clWhite;
    Ellipse(110,40,150,80); // чердак
    Rectangle(30,150,110,230);   // окно
    MoveTo(70,150);
    LineTo(70,230);
    Rectangle(150,300,230,150);  // дверь
    Brush.Color := clGray;
    Polygon([Point(150,300),Point(150,150),Point(210,160),Point(210,300)]);
  end;
end;


By L0MaNu4
 
Вверх Снизу