Direct2D (1) : 第一個例子

來源:互聯網
上載者:User
應該是 Delphi 2009 就支援 Direct2D 了,但那時我還用著 WinXP 系統(不支援);現在的測試環境是 Win7+DelphiXE。

Direct2D 屬 DirectX 家族,是 GDI、GDI+ 的繼任者,支援硬體加速,並能與 GDI、GDI+、D3D 互動。
其它初步的印象是其文本處理和影像處理分別使用了 DirectWrite 和 WIC 技術,還有支援圖層。

相關單元是 Direct2D.pas 和 D2D1.pas。
Direct2D.pas 中是 Delphi 對 Direct2D 的簡單實現,需要其更多功能時還應從 D2D1.pas 中挖掘。

Direct2D.pas 單元中主要包含 TDirect2DGraphicsObject、TDirect2DBrush、TDirect2DPen、TDirect2DFont、TDirect2DCanvas 五個類,
其中 TDirect2DGraphicsObject 是 TDirect2DBrush、TDirect2DPen、TDirect2DFont 的父類,一般不會單獨使用,
TDirect2DCanvas 在執行個體化時會自動建立並擁有 TDirect2DBrush、TDirect2DPen、TDirect2DFont 三個類的對象,所以:
學習主要面對的就是 TDirect2DCanvas 類。

粗粗一看源碼,感覺 TDirect2DCanvas 的成員與 TCanvas 極為相似,因為它們同是從 TCustomCanvas 繼承,所以擁有很多共同特性。

第一個例子:

unit Unit1;interfaceuses  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,  Dialogs;type  TForm1 = class(TForm)    procedure FormPaint(Sender: TObject);    procedure FormResize(Sender: TObject);  end;var  Form1: TForm1;implementation{$R *.dfm}uses Direct2D;procedure TForm1.FormPaint(Sender: TObject);var  d2dCanvas: TDirect2DCanvas;begin  d2dCanvas := TDirect2DCanvas.Create(Canvas, ClientRect);  d2dCanvas.BeginDraw;  d2dCanvas.Pen.Color := clRed;  d2dCanvas.Pen.Width := 4;  d2dCanvas.Ellipse(50, 50, ClientWidth-50, ClientHeight-50);  d2dCanvas.EndDraw;  d2dCanvas.Free;end;procedure TForm1.FormResize(Sender: TObject);begin  Invalidate;end;end.

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.