procedure MatrixApply(const matrix: TMatrixD; var pt: TPointD); overload;
procedure MatrixApply(const matrix: TMatrixD; var path: TPathD); overload;
procedure MatrixApply(const matrix: TMatrixD; var paths: TPathsD); overload;
Applies a matrix transformation either to a single coordinate, or to a series of path coordinates.
uses Img32, Img32.Fmt.PNG, Img32.Vector;
...
var
img: TImage32;
m: TMatrixD;
begin
img := TImage32.Create;
img.SetSize(256,256);
//draw buttons at the corners of a square inset 50px from the image's edges.
pts := Rectangle(50, 50, 206, 206);
for i := 0 to high(pts) do
DrawButton(img, pts[i], DpiAware(20), $FF00AA00, [boDropShadow]);
//create a matrix that rotates 15 degrees about the point [128,128] and
//draw shrinking buttons while rotating these a total of 4 * 15 degrees
m := IdentityMatrix;
MatrixRotate(m, PointD(128,128), pi/12);
for i := 1 to 4 do
begin
MatrixApply(m, pts);
for j := 0 to high(pts) do
DrawButton(img, pts[j], DpiAware(14 - i), $CC00CC00, [boDropShadow]);
end;
img.SaveToFile('Rotate4Buttons.png');
img.Free;
end;
Copyright ©2010-2023 Angus Johnson - Image32 4.8 - Help file built on 16 Apr 2025