程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> 隨鼠標移動的十字線的快速畫法

隨鼠標移動的十字線的快速畫法

編輯:Delphi

在鼠標移動事件中畫當前點的十字坐標線時,為抹掉老線常采用刷新畫面的方法,這樣就產生了非常嚴重的閃爍現象。因此,我們采用在畫新線前將老線抹去的方法就能很好的解決這個問題,而且速度非常快。
  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; 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved