在FormPaint上绘图,在台式机上没这个问题,到了笔记本上绘制的图形就会出现问题,也不是所有笔记本,试过在同事的笔记本上就没事,比如在上面show个子窗体,绘制的线都映到这个子窗体上面了,大家遇到这个问题没有呢,绘线就是在FormPaint事件里简单moveto,lineto!有遇到类似问题的朋友帮帮忙!顺便祝大家愚人节快乐!不过千万别误会哦,我的问题是真的!!!~~
调试欢乐多
没有啊,代码不知从何帖起,只是在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 時,出錯了吧。