rendered paste bodytype
TFerramenta = (frLinha, frRetângulo, frElipse, frRetRedondo);
TForm1 = class(TForm)
public
FlagDesenho: Boolean;
Origem, MovePonto: TPoint;
Ferramenta: TDrawingTool;
end;
procedure TForm1.spbLinhaClick(Sender: TObject);
begin
Ferramenta := frLinha;
end;
procedure TForm1.spbRetânguloClick(Sender: TObject);
begin
Ferramenta := frRetângulo;
end;
procedure TForm1.spbElipseClick(Sender: TObject);
begin
Ferramenta := frElipse;
end;
procedure TForm1.sobRetRedondoClick(Sender: TObject);
begin
Ferramenta := frRetRedondo;
end;
procedure TForm1.FormMouseUp(Sender: TObject);
begin
case Ferramenta of
frLinha:
begin
Canvas.MoveTo(Origem.X, Origem.Y);
Canvas.LineTo(X, Y)
end;
frRetângulo: Canvas.Rectangle(Origem.X, Origem.Y, X, Y);
frElipse: Canvas.Ellipse(Origem.X, Origem.Y, X, Y);
frRetRedondo: Canvas.RoundRect(Origem.X, Origem.Y, X, Y, . (Origem.X - X) div 2, (Origem.Y - Y) div 2);
end;
FlagDesenho := False;
end;
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: . Integer);
begin
if FlagDesenho then
begin
Canvas.Pen.Mode := pmNotXor;
case Ferramenta of
frLinha :
begin
Canvas.MoveTo(Origem.X, Origem.Y);
Canvas.LineTo(MovePonto.X, MovePonto.Y);
Canvas.MoveTo(Origem.X, Origem.Y);
Canvas.LineTo(X, Y);
end;
frRetângulo :
begin
Canvas.Rectangle(Origem.X, Origem.Y, MovePonto.X, MovePonto.Y);
Canvas.Rectangle(Origem.X, Origem.Y, X, Y);
end;
frElipse :
begin
Canvas.Ellipse(Origem.X, Origem.Y, X, Y);
Canvas.Ellipse(Origem.X, Origem.Y, X, Y);
end;
frRetRedondo :
begin
Canvas.RoundRect(Origem.X, Origem.Y, X, Y,(Origem.X - X) div 2, (Origem.Y - Y) div 2);
Canvas.RoundRect(Origem.X, Origem.Y, X, Y,(Origem.X - X) div 2, (Origem.Y - Y) div 2);
end;
end;
MovePonto := Point(X, Y);
end;
Canvas.Pen.Mode := pmCopy;
end;