为了画条直线我年前忙到年后!
解决方案 »
- listview应用出现内存泄漏现象,大家来看看???
- 在dephi中如何动态执行delphi程序?
- 单击或双击DBGridEH控件的tilte出错
- 开发SQL server 数据库时是用ODBC好呢,还是用ADO好呢
- 怎么判断一个数在数组内!
- delphi写asp控件的简单问题(在线等待)
- 我的实现修改保存对话框的保存按钮的CAPTION成备份(&B)的这段代码为什么不管用?
- 怎样取出delphi变量的存储地址。
- 对于文本框,在输入时想用回车键完成文本框间的移动,请问该如何处理.
- DAX error错误,紧急在线求助
- delphi6为什么要改成这样,怎样解决啊
- 请问怎样把TBUTTON转换成TOBJECT?
写得很清楚,自己看吧。
form1..
private
OldP,NewP:TPoint;
Down:Boolean;
....
procedure Form1.OnCreate(sender:TOBject);
begin
down:=false;
end;
...
procedure Form1.OnMouseDown(...);
begin
Down:=true;
OldP:=POint(X,Y);
NewP:=OldP;
end;
PROCEDURE Form1.OnMouseMove();
begin
NewP:=Point(x,y);
if (NewP.x=OldP.x)and(NewP.y=OldP.y) then exit;
if Not Down then exit;
with Form1.Canvas do begin
Pen.Mode:=pm_Not;//设置画笔模式为反,具体取值看帮助;忘记了:)
MoveTo(OldP);
LineTo(NewP);// 插曲旧线
Pen.Mode:=pm_not;
MoveTo(OldP);
LineTo(NewP);//新线
end;end;
procedure Form1.OnMouseUp();
begin
Down:=false;
NewP:=Point(X,Y);
with form1.canvas do begin
pen.color:=Your Line Color;
MoveTo(OldP);
LIneTo(NewP);
end;
end;//that's all;
拖动过程关键在 FormMouseMove 的 DrawShape 里的 Pen.Mode := AMode;
DrawShape里用的是 pmNotXor(异或非),
然后 FormMouseUp 用的是 pmCopy(原样)。
我做好了,在上面连接下载代码