熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Delphi編程 >> 正文

DELPHI基礎教程:Delphi圖形圖像編程(二)[1]

2022-06-13   來源: Delphi編程 

  畫直線時用戶只有在松開鼠標才能看見直線對直線的變化不能進行實時觀測這是因為鼠標移動時程序沒有進行某種應Delphi定義了OnMouseMove事件來響應鼠標移動以下代碼可使用戶隨時觀測直線的變化

  procedure TFormFormMouseMove(Sender:Tobject)

  begin

  Drowto(XY)

  Moveto(origin)

  end

  origin是起始點

   繪圖功能的實現

  繪圖軟件常根據用戶的要求改變繪圖工具Graphexdpr例程中當用戶按下某個按鈕時可選擇繪圖工具中的畫筆或畫刷在程序類型說明部分定義了五種繪圖工具

  type

  TDrawingTool = (dtLinedtRectangledtEllipsdtRoundRectdtPolygon)

  當選中某種按鈕則選中了相應的繪圖工具

  procedure TFormLineButtonClick(Sender: TObject)

  begin

  DrawingTool := dtLine;

  end;

  procedure TFormRectangleButtonClick(Sender: TObject)

  begin

  DrawingTool := dtRectangle;

  end;

  procedure TFormEllipseButtonClick(Sender: TObject)

  begin

  DrawingTool := dtEllipse;

  end;

  procedure TFormRoundRectButtonClick(Sender: TObject)

  begin

  DrawingTool := dtRoundRect;

  end;

  procedure TFormPolygonButtonClick(Sender: TObject)

  begin

  DrawingTool :=dtPolygon;

  end;

  DrawShape過程定義了每種繪圖工具的動作

  procedure TFormDrawShape(TopLeft BottomRight: TPoint; AMode: TPenMode)

  begin

  with ImageCanvas do

  begin

  PenMode := AMode;

  case DrawingTool of

  dtLine: begin

  MoveTo(TopLeftX TopLeftY)

  LineTo(BottomRightX BottomRightY)

  end;

  dtRectangle: Rectangle(TopLeftX TopLeftY BottomRightX BottomRightY)

  dtEllipse: Ellipse(TopLeftX TopLeftY BottomRightX BottomRightY)

  dtRoundRect: RoundRect(TopLeftX TopLeftY BottomRightX BottomRightY

  (TopLeftX BottomRightX) div (TopLeftY BottomRightY) div

  dtPolygon:Polygon([Point(TopLeftBottomRight]) end;

  end;

  end;

  程序剛運行時只有一個工具欄當用戶單擊畫筆和畫刷時則出現相應的工具欄其代碼如下

  procedure TFormPenButtonClick(Sender: TObject)

  begin

  PenBarVisible := PenButtonDown;

  end;

  procedure TFormBrushButtonClick(Sender: TObject)

  begin

  BrushBarVisible := BrushButtonDown;

  end;

  在設計繪圖程序時還要解決一些問題如為了在鼠標移動時能觀測圖形的變化我們定義了OnMouseMove事件但會出現這樣的現象當鼠標進入繪圖區時用戶未按下鼠標鍵畫布上卻出現繪制的圖形這是我們不希望看到的其原因是沒有對鼠標按鈕是否按下進行判斷因此在窗體對象中定義了drawing的域當鼠標按鈕按下時drawing 設置成真值只有drawing為真鼠標移動才執行繪圖功能當鼠標鍵松開時drawing設置成假鼠標移動將不執行繪圖動作

[]  []  []  


From:http://tw.wingwit.com/Article/program/Delphi/201311/25246.html
    推薦文章
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.