读书人

随鼠标腾挪的十字线的快速画法

发布时间: 2013-04-09 16:45:09 作者: rapoo

随鼠标移动的十字线的快速画法
在鼠标移动事件中画当前点的十字坐标线时,为抹掉老线常采用刷新画面的方法,这样就产生了非常严重的闪烁现象。因此,我们采用在画新线前将老线抹去的方法就能很好的解决这个问题,而且速度非常快。现举例如下:

var    OldX, OldY: Longint;// 使用前初始化OldX:=-1;   procedure TfrmMain.PaintBoxCMouseMove(Sender: TObject; Shift: TShiftState;     X, Y: Integer);     Procedure DrawCross(AX, AY: Integer);     begin      With PaintBoxC.Canvas do      begin        Pen.Color := CrossColor;         Pen.Style := CrossStyle;         Pen.Mode := pmXor;         Pen.Width := 1;         MoveTo(AX, 0);         LineTo(AX, PaintBoxC.Height);         MoveTo(0, AY);         LineTo(PaintBoxC.Width, AY);       end;     end;   begin    if (OldX <> -1) then    begin      DrawCross(OldX, OldY); { 画旧十字线 }      OldX := -1;     end;     { 检查当前鼠标点是否在指定范围内 }    if PtInRect(Rect(0, 0, PaintBoxC.Width, PaintBoxC.Height), Point(X, Y)) then    begin      DrawCross(X, Y); { 在当前鼠标点画十字线 }      { 保存旧鼠标点 }      OldX := X;       OldY := Y;     end;   end;
原文链接:http://tansoo.cn/?p=220

读书人网 >编程

热点推荐