其他语言

位置:IT落伍者 >> 其他语言 >> 浏览文章

DELPHI基础教程:Delphi图形图像编程(二)[1]


发布日期:2024年03月04日
 
DELPHI基础教程:Delphi图形图像编程(二)[1]

画直线时用户只有在松开鼠标才能看见直线对直线的变化不能进行实时观测这是因为鼠标移动时程序没有进行某种应Delphi定义了OnMouseMove事件来响应鼠标移动以下代码可使用户随时观测直线的变化

procedure TFormFormMouseMove(Sender:Tobject)

begin

Drowto(XY)

Moveto(origin)

end

origin是起始点

绘图功能的实现

绘图软件常根据用户的要求改变绘图工具Graphexdpr例程中当用户按下某个按钮时可选择绘图工具中的画笔或画刷在程序类型说明部分定义了五种绘图工具

type

TDrawingTool = (dtLinedtRectangledtEllipsdtRoundRectdtPolygon)

当选中某种按钮则选中了相应的绘图工具

procedure TFormLineButtonClick(Sender: TObject)

begin

DrawingTool := dtLine;

end;

procedure TFormRectangleButtonClick(Sender: TObject)

begin

DrawingTool := dtRectangle;

end;

procedure TFormEllipseButtonClick(Sender: TObject)

begin

DrawingTool := dtEllipse;

end;

procedure TFormRoundRectButtonClick(Sender: TObject)

begin

DrawingTool := dtRoundRect;

end;

procedure TFormPolygonButtonClick(Sender: TObject)

begin

DrawingTool :=dtPolygon;

end;

DrawShape过程定义了每种绘图工具的动作

procedure TFormDrawShape(TopLeft BottomRight: TPoint; AMode: TPenMode)

begin

with ImageCanvas do

begin

PenMode := AMode;

case DrawingTool of

dtLine: begin

MoveTo(TopLeftX TopLeftY)

LineTo(BottomRightX BottomRightY)

end;

dtRectangle: Rectangle(TopLeftX TopLeftY BottomRightX BottomRightY)

dtEllipse: Ellipse(TopLeftX TopLeftY BottomRightX BottomRightY)

dtRoundRect: RoundRect(TopLeftX TopLeftY BottomRightX BottomRightY

(TopLeftX BottomRightX) div (TopLeftY BottomRightY) div

dtPolygon:Polygon([Point(TopLeftBottomRight]) end;

end;

end;

程序刚运行时只有一个工具栏当用户单击画笔和画刷时则出现相应的工具栏其代码如下

procedure TFormPenButtonClick(Sender: TObject)

begin

PenBarVisible := PenButtonDown;

end;

procedure TFormBrushButtonClick(Sender: TObject)

begin

BrushBarVisible := BrushButtonDown;

end;

在设计绘图程序时还要解决一些问题如为了在鼠标移动时能观测图形的变化我们定义了OnMouseMove事件但会出现这样的现象当鼠标进入绘图区时用户未按下鼠标键画布上却出现绘制的图形这是我们不希望看到的其原因是没有对鼠标按钮是否按下进行判断因此在窗体对象中定义了drawing的域当鼠标按钮按下时drawing 设置成真值只有drawing为真鼠标移动才执行绘图功能当鼠标键松开时drawing设置成假鼠标移动将不执行绘图动作

[] [] []

               

上一篇:DELPHI基础教程:Delphi图形图像编程(一)[1]

下一篇:DELPHI基础教程:Delphi图形图像编程(二)[3]