Skip to content

Instantly share code, notes, and snippets.

@CynicRus
Created January 8, 2026 11:11
Show Gist options
  • Select an option

  • Save CynicRus/71ad086e3abf60ce5fca14a24f486a8f to your computer and use it in GitHub Desktop.

Select an option

Save CynicRus/71ad086e3abf60ce5fca14a24f486a8f to your computer and use it in GitHub Desktop.
GDI+ Canvas test
procedure TForm1.BitBtn1Click(Sender: TObject);
var
Render: TGDIPlusCanvas;
begin
PaintBox1.Canvas.FillRect(0,0,PaintBox1.Width, PaintBox1.Height);
Render := TGDIPlusRender.Create(PaintBox1.Canvas.Handle);
try
TestRender(Render);
finally
Render.Free;
end;
end;
procedure TForm1.TestRender(ACanvas: TGDIPlusCanvas);
var
Points: array of TPoint;
begin
ACanvas.Pen.Color := clRed;
ACanvas.Pen.Width := 2;
ACanvas.Brush.Color := clBlue;
ACanvas.Brush.Style := bsSolid;
// Прямоугольник
ACanvas.Rectangle(30, 30, 150, 110);
// Эллипс
ACanvas.Ellipse(180, 30, 300, 110);
// Скругленный прямоугольник
ACanvas.RoundRect(330, 30, 450, 110, 20, 20);
// Фокусный прямоугольник
ACanvas.DrawFocusRect(Rect(480, 30, 600, 110));
// Сплошная линия
ACanvas.Pen.Style := psSolid;
ACanvas.Line(30, 140, 150, 140);
// Пунктирная линия
ACanvas.Pen.Style := psDash;
ACanvas.Line(180, 140, 300, 140);
// Точечная линия
ACanvas.Pen.Style := psDot;
ACanvas.Line(330, 140, 450, 140);
// Сброс стиля пера для последующих элементов
ACanvas.Pen.Style := psSolid;
// Простой треугольник
SetLength(Points, 3);
Points[0] := Point(60, 170);
Points[1] := Point(120, 170);
Points[2] := Point(90, 230);
ACanvas.Polygon(Points);
// Звезда
ACanvas.Brush.Color := clYellow;
SetLength(Points, 10);
Points[0] := Point(240, 170);
Points[1] := Point(255, 200);
Points[2] := Point(285, 200);
Points[3] := Point(265, 220);
Points[4] := Point(275, 250);
Points[5] := Point(240, 235);
Points[6] := Point(205, 250);
Points[7] := Point(215, 220);
Points[8] := Point(195, 200);
Points[9] := Point(225, 200);
ACanvas.Polygon(Points);
// Дуга
ACanvas.Brush.Color := clBlue;
ACanvas.Arc(30, 260, 150, 380, 30, 30, 150, 150);
// Кривая Безье
ACanvas.Pen.Color := clPurple;
ACanvas.Pen.Width := 3;
ACanvas.PolyBezier([
Point(180, 320),
Point(240, 260),
Point(300, 380),
Point(360, 320)
]);
// Вертикальная градиентная заливка
ACanvas.Pen.Color := clBlack;
ACanvas.Pen.Width := 1;
ACanvas.GradientFill(Rect(420, 260, 550, 380), clGreen, clYellow, gdVertical);
// Горизонтальная градиентная заливка
ACanvas.GradientFill(Rect(30, 400, 260, 435), clRed, clWhite, gdHorizontal);
// Дополнительные элементы
ACanvas.Font.Name := 'Arial';
ACanvas.Font.Size := 12;
ACanvas.Font.Color := clBlack;
ACanvas.TextOut(280, 410, 'Демонстрация работы через GDI+');
end;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment