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

DELPHI基礎教程:Delphi自定義部件開發(四)[4]

2013-11-23 17:48:04  來源: Delphi編程 

  下面給Shape控制增加了該方法並更新了部件的constructor以使Pen和Brush事件指向新方法

  type

  TSampleShape = class(TGraphicControl)

  published

  procdeure StyleChanged(Sender: TObject)

  end;

  implemintation

  constructor TSampleShapeCreate(AOwner:TComponent)

  begin

  inherited Create(AOwner)

  Width := ;

  Height := ;

  Fpen := TPenCreate;

  FPenOnChange := StyleChanged;

  Fbrush := TBrushCreate;

  FBrushOnChange := StyleChanged;

  end;

  procedure TSampleShapeStyleChanged(Sender: TObject)

  begin

  Invalidate(true)

  end;

  當變化發生時部件重畫以響應Pen或Brush的改變

   怎樣畫部件圖形

  圖形控制基本要素是在屏幕上畫圖形的方法抽象類TGraphicControl定義了名為Paint的虛方法可以覆蓋該方法來畫所要的圖形

  Shape控制的paint方法需要做

  ● 使用用戶選擇的Pen和Brush

  ● 使用所選的形狀

  ● 調整座標這樣方形和圓可以使用相同的Width和Height

  覆蓋paint方法需要兩步

  ● 在部件聲明中增加Paint方法的聲明

  ● 在implementation部分寫Paint方法的實現

  下面是Paint方法的聲明

  type

  TSampleShape = class(TGraphicControl)

  protected

  procedure Paint; override;

  end;

  然後編寫Paint的實現

  procedure TSampleShapePaint;

  begin

  with Canvas do

  begin

  Pen := FPen;

  Brush := FBrush;

  case FShape of

  sstRectangle sstSquare :

  Rectangle( Width Height)

  sstRoundRect sstRoundSquare:

  RoundRect( Width Height Width div Height div

  sstCircle sstEllipse :

  Ellipse( Width Height)

  end;

  end;

  end;

  無論任何控制需要更新圖形時Paint就被調用當控制第一次出現或者當控制前面的窗口消失時Windows會通知控制畫自己也可以通過調用Invalidate方法強制重畫就象StyleChanged方法所做的那樣

  返回目錄DELPHI基礎教程

       編輯推薦

       Java程序設計培訓視頻教程

       JEE高級框架實戰培訓視頻教程

  Visual C++音頻/視頻技術開發與實戰

  Oracle索引技術

  ORACLEG數據庫開發優化指南

  Java程序性能優化讓你的Java程序更快更穩定

  C嵌入式編程設計模式

  Android游戲開發實踐指南

[]  []  []  []  


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