程序到笔记本的问题 在FormPaint上绘图,在台式机上没这个问题,到了笔记本上绘制的图形就会出现问题,也不是所有笔记本,试过在同事的笔记本上就没事,比如在上面show个子窗体,绘制的线都映到这个子窗体上面了,大家遇到这个问题没有呢,绘线就是在FormPaint事件里简单moveto,lineto!有遇到类似问题的朋友帮帮忙!顺便祝大家愚人节快乐!不过千万别误会哦,我的问题是真的!!!~~ 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 貼下你寫的代碼看下。 應該不會的。是不是取過 GetDC, getWindowDC 這些 没有啊,代码不知从何帖起,只是在formpaint事件里,moveto,lineto.还有把它放大缩小,只是将绘图缓冲的数据放大倍数,绘图还是一样的呀! procedure DrawMovingPoint(Mx,My: Integer)stdcall;begin //清除上次绘出的十字型指针 Form1.Canvas.Pen.Color := EraseColor;//clBtnFace; Form1.canvas.MoveTo(MmouseX,upscrY); Form1.Canvas.LineTo(MmouseX,lowscrY); //mi2 := upscrY; Form1.Canvas.Pen.Color := MesansuPointColor;//clYellow; Form1.canvas.MoveTo(MX,UpscrY); Form1.Canvas.LineTo(MX,LowscrY); //备份当前鼠标XY值,擦除十字型指针 MmouseX := Mx; MmouseY := My; //计算当前指针光标位置的幅值和时间 Form1.Timer1.Enabled := True;end; 能不能给我推荐个画图好的方式呢,我都是Paint的,屏幕上线还有点闪! 在FormCreate里加上DoubleBuffered := True;可以解决闪烁的现象如果你只是简单的MoveTo LineTo建议不要放到Onpaint事件里吧放到MouseDown,MouseUp事件里放到OnPaint里会不停的执行画图的代码MouseDown\MouseUp只让它在MouseUp的时候执行一次 不要放到 OnPanit 裏面, 應該是在計算 Rect 時,出錯了吧。 楼主用GDI画图吧 方便多了 感觉大家说的都不在点子上,OnPaint会不会有优先级呢,比如在主窗体绘图区域,Show个子窗体,线映到子窗体上了,而且这个问题在我们公司所有机器上,都没出现,包括部分笔记本,就是新买的这台上有这个问题,挺郁闷的!DoubleBuffered := True; 不是这个问题,说不在Onpaint里画,倒是有道理,但因为要做图形,上下移动,对称等操作,还有更新之类的,不停画虽然笨了点.但效果还不错,因为做图形的每一个变换,对应的都是缓冲里的数据在变换,这个软件是公司内部进行工业控制调试用的,所以数据跟图形的一一对应非常重要,换种绘图方式正在考虑!谢谢各位关注! Delphi的IWDBGrid控件使用问题 很怪很怪的很小很小的问题。 如何知道字段的属性? ================散分,第一次==================== 请问 DBISAM 的众多版本中哪个最好用?能找到的完全版又是什么版本呢? delphi 调用打开powerpoint 请教李维电子商务篇第五章一个很菜的问题 我是女生,我爱编程。找工作时会不会受耻视呀 怎么求出两个Tdatetime型的变量差几天,并将相差天数付给一个整型变量 如何防止程序二次执行and如何使程序连续执行 delphi计算问题,请假高手 单步跟踪
没有啊,代码不知从何帖起,只是在formpaint事件里,moveto,lineto.还有把它放大缩小,只是将绘图缓冲的数据放大倍数,绘图还是一样的呀!
procedure DrawMovingPoint(Mx,My: Integer)stdcall;
begin
//清除上次绘出的十字型指针
Form1.Canvas.Pen.Color := EraseColor;//clBtnFace;
Form1.canvas.MoveTo(MmouseX,upscrY);
Form1.Canvas.LineTo(MmouseX,lowscrY); //mi2 := upscrY;
Form1.Canvas.Pen.Color := MesansuPointColor;//clYellow;
Form1.canvas.MoveTo(MX,UpscrY);
Form1.Canvas.LineTo(MX,LowscrY);
//备份当前鼠标XY值,擦除十字型指针
MmouseX := Mx;
MmouseY := My;
//计算当前指针光标位置的幅值和时间
Form1.Timer1.Enabled := True;
end;
可以解决闪烁的现象如果你只是简单的MoveTo LineTo建议不要放到Onpaint事件里吧
放到MouseDown,MouseUp事件里
放到OnPaint里会不停的执行画图的代码
MouseDown\MouseUp只让它在MouseUp的时候执行一次
不要放到 OnPanit 裏面, 應該是在計算 Rect 時,出錯了吧。