Здравствуйте.
Суть такова: на канве в TImage отрисовываются простейшие геометрические фигуры: (Круг, прямоугольник и треугольник). Как реализовать масштабирование и перемещение при помощи мыши? Собственно, есть код отрисовки фигур
procedure TForm1.DrawEllipseButtonClick(Sender: TObject);
var
MyRect: TRectF;
x,y: integer;
begin
x:=round(image1.Width);
y:=round(image1.Height);
MyRect := TRectF.Create(
x div 2 - strtoint(edit3.Text) / 2,
y div 2 - strtoint(edit3.Text) / 2,
x div 2 + strtoint(edit3.Text) / 2,
y div 2 + strtoint(edit3.Text) / 2
);
Image1.Bitmap.Canvas.BeginScene;
Image1.Bitmap.Canvas.DrawEllipse(MyRect, 40);
Image1.Bitmap.Canvas.EndScene;
end;
procedure TForm1.DrawRectButtonClick(Sender: TObject);
var
MyRect: TRectF;
x,y: integer;
begin
x:=round(image1.Width);
y:=round(image1.Height);
MyRect := TRectF.Create(
x div 2 - strtoint(edit2.Text) / 2,
y div 2 - strtoint(edit1.Text) / 2,
x div 2 + strtoint(edit2.Text) / 2,
y div 2 + strtoint(edit1.Text) / 2
);
Image1.Bitmap.Canvas.BeginScene;
Image1.Bitmap.Canvas.DrawRect(MyRect, 0, 0, AllCorners, 100);
Image1.Bitmap.Canvas.EndScene;
end;
procedure TForm1.DrawTriangleButtonClick(Sender: TObject);
var
p1, p2, p3, p4: TPointF;
MyPolygon: TPolygon;
begin
p1 := TPointF.Create(16, 40);
p2 := TPointF.Create(44, 6);
p3 := TPointF.Create(15,20);
p4 := TPointF.Create(16,40);
SetLength(MyPolygon, 4);
MyPolygon[0] := p1;
MyPolygon[1] := p2;
MyPolygon[2] := p3;
MyPolygon[3] := p4;
Image1.Bitmap.Canvas.BeginScene;
Image1.Bitmap.Canvas.DrawPolygon(MyPolygon, 50);
Image1.Bitmap.Canvas.EndScene;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Image1.Bitmap.SetSize(Round(Image1.Width), Round(Image1.Height));
Image1.Bitmap.Clear(TAlphaColors.White);
end;
Помогите, пожалуйста.
P.S.: отрисовка треугольника, как можно увидеть, в проекте