【www.gdgbn.com--Delphi】

 
     画直线时,用户只有在松开鼠标才能看见直线,对直线的变化不能进行实时观测。这是因为鼠标移动时程序没有进行某种应。Delphi定义了OnMouseMove事件来响应鼠标移动。以下代码可使用户随时观测直线的变化: 
  procedure TForm1.FormMouseMove(Sender:Tobject)
begin
Drowto(X,Y);
Moveto(origin);
end. 
origin是起始点。
5.2.3 绘图功能的实现
  绘图软件常根据用户的要求改变绘图工具。Graphex.dpr例程中,当用户按下某个按钮时,可选择绘图工具中的画笔或画刷,在程序类型说明部分定义了五种绘图工具。
   type
TDrawingTool = (dtLine,dtRectangle,dtEllips,dtRoundRect,dtPolygon); 
当选中某种按钮,则选中了相应的绘图工具,如: 
procedure TForm1.LineButtonClick(Sender: TObject);
begin
DrawingTool := dtLine;
end; 
procedure TForm1.RectangleButtonClick(Sender: TObject);
begin
DrawingTool := dtRectangle;
end; 
procedure TForm1.EllipseButtonClick(Sender: TObject);
begin
DrawingTool := dtEllipse;
end; 
procedure TForm1.RoundRectButtonClick(Sender: TObject);
begin
DrawingTool := dtRoundRect;
end; 
procedure TForm1.PolygonButtonClick(Sender: TObject);
begin
DrawingTool :=dtPolygon;
end;  
DrawShape过程定义了每种绘图工具的动作: 
procedure TForm1.DrawShape(TopLeft, BottomRight: TPoint; AMode: TPenMode);
begin
with Image.Canvas do
begin
Pen.Mode := AMode;
case DrawingTool of
dtLine: begin
MoveTo(TopLeft.X, TopLeft.Y);
LineTo(BottomRight.X, BottomRight.Y);
end;
dtRectangle: Rectangle(TopLeft.X, TopLeft.Y, BottomRight.X, BottomRight.Y);

本文来源:http://www.gdgbn.com/wangyezhizuo/4227/