|
@@ -102,31 +102,36 @@ var bmp: TBGRABitmap;
|
|
x0,y0,x1,y1,x2,y2: single;
|
|
x0,y0,x1,y1,x2,y2: single;
|
|
dx,dy,t: single;
|
|
dx,dy,t: single;
|
|
c: TBGRAPixel;
|
|
c: TBGRAPixel;
|
|
|
|
+ scaling: Double;
|
|
begin
|
|
begin
|
|
- bmp := TBGRABitmap.Create(PaintBox1.Width,PaintBox1.Height);
|
|
|
|
- bmp.Fill(clForm);
|
|
|
|
- c := ColorToBGRA(ColorToRGB(clWindowText));
|
|
|
|
- t := min(PaintBox1.Width/2,PaintBox1.Height/2);
|
|
|
|
- dx := cos(angle*Pi/180);
|
|
|
|
- dy := sin(angle*Pi/180);
|
|
|
|
- x1 := PaintBox1.Width/2;
|
|
|
|
- y1 := PaintBox1.Height/2;
|
|
|
|
- x0 := x1-dx*(t-2);
|
|
|
|
- y0 := y1-dy*(t-2);
|
|
|
|
- x2 := x1+dx*(t-2);
|
|
|
|
- y2 := y1+dy*(t-2);
|
|
|
|
- bmp.FillEllipseAntialias(x1,y1,t-1,t-1,BGRA(c.red,c.green,c.blue,48));
|
|
|
|
- if Checkbox_Oriented.Checked then
|
|
|
|
- begin
|
|
|
|
- bmp.DrawLineAntialias(x1,y1,x2,y2,c,2,true);
|
|
|
|
- bmp.DrawLineAntialias(x2+dy*5-dx*5,y2-dx*5-dy*5,x2,y2,c,2,false);
|
|
|
|
- bmp.DrawLineAntialias(x2-dy*5-dx*5,y2+dx*5-dy*5,x2,y2,c,2,false);
|
|
|
|
- end else
|
|
|
|
- begin
|
|
|
|
- bmp.DrawLineAntialias(x0,y0,x2,y2,c,2,true);
|
|
|
|
- end;
|
|
|
|
- bmp.Draw(PaintBox1.Canvas,0,0,true);
|
|
|
|
- bmp.Free;
|
|
|
|
|
|
+ scaling := GetCanvasScaleFactor;
|
|
|
|
+ bmp := TBGRABitmap.Create(round(PaintBox1.Width*scaling),
|
|
|
|
+ round(PaintBox1.Height*scaling));
|
|
|
|
+ bmp.Fill(clForm);
|
|
|
|
+ c := ColorToBGRA(ColorToRGB(clWindowText));
|
|
|
|
+ t := min(bmp.Width/2,bmp.Height/2);
|
|
|
|
+ dx := cos(angle*Pi/180);
|
|
|
|
+ dy := sin(angle*Pi/180);
|
|
|
|
+ x1 := bmp.Width/2;
|
|
|
|
+ y1 := bmp.Height/2;
|
|
|
|
+ x0 := x1-dx*(t-2);
|
|
|
|
+ y0 := y1-dy*(t-2);
|
|
|
|
+ x2 := x1+dx*(t-2);
|
|
|
|
+ y2 := y1+dy*(t-2);
|
|
|
|
+ bmp.FillEllipseAntialias(x1,y1,t-1,t-1,BGRA(c.red,c.green,c.blue,48));
|
|
|
|
+ if Checkbox_Oriented.Checked then
|
|
|
|
+ begin
|
|
|
|
+ bmp.DrawLineAntialias(x1,y1,x2,y2,c,2*scaling,true);
|
|
|
|
+ bmp.DrawLineAntialias(x2+dy*5*scaling-dx*5*scaling,
|
|
|
|
+ y2-dx*5*scaling-dy*5*scaling,x2,y2,c,2*scaling,false);
|
|
|
|
+ bmp.DrawLineAntialias(x2-dy*5*scaling-dx*5*scaling,
|
|
|
|
+ y2+dx*5*scaling-dy*5*scaling,x2,y2,c,2*scaling,false);
|
|
|
|
+ end else
|
|
|
|
+ begin
|
|
|
|
+ bmp.DrawLineAntialias(x0,y0,x2,y2,c,2*scaling,true);
|
|
|
|
+ end;
|
|
|
|
+ bmp.Draw(PaintBox1.Canvas, rect(0,0,PaintBox1.Width,PaintBox1.Height), true);
|
|
|
|
+ bmp.Free;
|
|
end;
|
|
end;
|
|
|
|
|
|
procedure TFMotionBlur.SpinEdit_DistanceChange(Sender: TObject);
|
|
procedure TFMotionBlur.SpinEdit_DistanceChange(Sender: TObject);
|