随鼠标移动的十字线的快速画法

页面导航:首页 > 软件编程 > Delphi > 随鼠标移动的十字线的快速画法

随鼠标移动的十字线的快速画法

来源: 作者: 时间:2016-01-18 15:42 【

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

文章评论

最 近 更 新
热 点 排 行
Js与CSS工具
代码转换工具

<