程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> Direct2D (1) : 第一個例子

Direct2D (1) : 第一個例子

編輯:Delphi

 應該是 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; 
 
interface 
 
uses 
  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. 


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