zoukankan      html  css  js  c++  java
  • Direct2D (1) : 第一个例子


    应该是 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.
    

  • 相关阅读:
    ls 按大小排序 按时间排序
    【u035】奶牛的电信
    【record】#10
    【record】10.30..11.6
    【33.33%】【codeforces 608C】Chain Reaction
    【44.19%】【codeforces 608D】Zuma
    【22.73%】【codeforces 606D】Lazy Student
    【27.40%】【codeforces 599D】Spongebob and Squares
    【26.67%】【codeforces 596C】Wilbur and Points
    【13.91%】【codeforces 593D】Happy Tree Party
  • 原文地址:https://www.cnblogs.com/del/p/1999675.html
Copyright © 2011-2022 走看看