unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls, BGRABitmap,
BGRABitmapTypes;
type
{ TForm1 }
TForm1 = class(TForm)
procedure FormPaint(Sender: TObject);
private
public
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
{ TForm1 }
procedure TForm1.FormPaint(Sender: TObject);
var
Screen, Img : TBGRABitmap;
X,Y, RX, RY, Offset, LineWidth : single;
W, H : integer;
info : string;
begin
W := 120;
H := 75;
X := 100;
Y := 75;
RX := 90;
RY := 65;
LineWidth:=4.0;
Screen := TBGRABitmap.Create(1920,1080,BGRAWhite);
Img := TBGRABitmap.Create(w,h);
Img.Fill(BGRA(200,200,40));
// Draw Lines On Img
Img.Canvas2D.strokeStyle(BGRABlack);
Img.Canvas2D.lineWidth:=LineWidth;
Img.Canvas2D.beginPath;
Img.Canvas2D.moveTo(0,RY);
Img.Canvas2D.lineTo(w,RY);
Img.Canvas2D.moveTo(RX,0);
Img.Canvas2D.lineTo(RX,h);
Img.Canvas2D.stroke;
// Draw Lines On Screen which will be behind image
Screen.Canvas2D.fillStyle(BGRA(240,0,240));
Screen.Canvas2D.lineWidth:=LineWidth;
Screen.Canvas2D.beginPath;
Screen.Canvas2D.moveTo(0,RY+Y);
Screen.Canvas2D.lineTo(1920,RY+Y);
Screen.Canvas2D.moveTo(RX+X,0);
Screen.Canvas2D.lineTo(RX+X,1080);
Screen.Canvas2D.stroke;
// Draw image on screen
Offset:=1;
info := 'Offset='+FloatToStr(Offset);
Screen.Canvas2D.drawImage(Img,X+Offset,Y+Offset);
Screen.TextOut(100,50,info,BGRABlack);
Screen.Draw(Canvas,0,0);
// Change to folder on your machine
Screen.SaveToFile('x:\Temp\image_lines '+FloatToStr(Offset)+'.png');
Img.Free;
Screen.Free;
end;
end.