canvas教程

使用Canvas画出任意的形状(就是拿鼠标在上面乱画), 撤销上一次

字号+ 作者:H5之家 来源:H5之家 2017-05-26 17:00 我要评论( )

Delphi2007,框架,总结,函数,用法,方法,介绍,集锦,例子,变量,大全,Program,Source,vcl,控件

1.使用Canvas画出任意的形状(就是拿鼠标在上面乱画) pts : TPoints; 参考?xid=17552 例子: procedure TForm1.FormCreate(Sender: TObject); begin pts := TPoints.Create; end; procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin isDraw := True; pts.RemoveAll; //清除上次画图数据 pts.Add(Point(X, Y)); image1.Canvas.Pen.Mode := pmCopy; image1.Canvas.MoveTo(X, Y); end; procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin if isDraw then begin pts.Add(Point(X, Y)); with image1.Canvas do begin LineTo(X, Y); end; end; end; procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin isDraw := False; end; procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin if pts <> nil then pts.Free; end; 2.撤销上一次画图的操作 procedure TForm1.Button1Click(Sender: TObject); var i: integer; begin if pts.Count > 0 then begin with image1.Canvas do begin Pen.Mode := pmNotXor; MoveTo(pts.Items[0].X, pts.Items[0].Y); for i := 1 to pts.Count - 1 do begin LineTo(pts.Items[i].X, pts.Items[i].Y); end; Pen.Mode := pmCopy; end; end; pts.RemoveAll; end;

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • 关于撤销的问题!

    关于撤销的问题!

    2017-01-08 14:03

  • Delphi笔记

    Delphi笔记

    2016-12-23 14:01

  • 轻松实现DBGrid的多表头

    轻松实现DBGrid的多表头

    2016-05-25 14:01

网友点评