對Delphi控制元件的一點改良(二) (轉)

gugu99發表於2008-06-29
對Delphi控制元件的一點改良(二) (轉)[@more@]

如何在沒有畫布的上進行繪畫呢?比如說Tpanel,他不具備畫布的屬性在上面寫字畫畫都有困難。自己再把它包裝一下嗎?麻煩點吧!如何才能方便的進行處理呢?

看看這段程式碼

unit Unit1;

interface

uses
  , Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
  Panel1: TPanel;
  Button1: TButton;
  procedure Button1Click(Sender: T);
  private
  { Private declarations }
  public
  { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  PanelCanvas: TCanvas;

begin
  PanelCanvas := TControlCanvas.Create;
  TControlCanvas(PanelCanvas).Control := Panel1;
  PanelCanvas.Brush.Style := bsClear;
  PanelCanvas.Pen.Color := clBlue;
  PanelCanvas.Rectangle(2, 2, Panel1.Width - 2, Panel1.Height - 2);
  PanelCanvas.Font.Name:='楷體_GB2312';
  PanelCanvas.Font.Size:=24;
  PanelCanvas.TextOut(Panel1.Width div 2,Panel1.Height div 2,'OK');
  PanelCanvas.Free;
end;

end.

當少量應用時可以這樣處理。當然如果要當量應用在沒有畫布的控制元件上繪畫就用以上的方法把原來的控制元件包裝一下開發一個新的控制元件,會更方便一些。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10748419/viewspace-1006250/,如需轉載,請註明出處,否則將追究法律責任。

相關文章