Direct2D (4) : DrawGeometry() 與 FillGeometry()

來源:互聯網
上載者:User
原始的 Direct2D 只提供了幾種簡單圖形(直線、矩形、圓角矩形、橢圓)的繪製與填充,更多集合圖形或路徑的描繪要使用 DrawGeometry() 和 FillGeometry()。

既然能繪製更複雜的圖形,當然也能繪製基本圖形,先試下使用 DrawGeometry()、FillGeometry() 實現矩形、圓角矩形和橢圓。

方法的參數是 ID2D1Geometry 介面,ID2D1RectangleGeometry、ID2D1RoundedRectangleGeometry、ID2D1EllipseGeometry 都是它的子介面。
ID2D1Factory 提供了實現這三個介面的方法,從 D2DFactory() 可擷取 ID2D1Factory 介面。

測試代碼:

uses Direct2D, D2D1;procedure TForm1.FormPaint(Sender: TObject);var  cvs: TDirect2DCanvas;  fPt: TD2DPoint2f;  fLeft,fTop: Single;  iEllipse: ID2D1EllipseGeometry;  iRectangle: ID2D1RectangleGeometry;  iRoundedRectangle: ID2D1RoundedRectangleGeometry;  iFactory: ID2D1Factory;begin  fPt := D2D1PointF(ClientWidth / 2, ClientHeight / 2);  fLeft := ClientWidth / 4;  fTop := ClientHeight / 4;  iFactory := D2DFactory();  iFactory.CreateRectangleGeometry(D2D1RectF(fLeft, fTop, fLeft*3, fTop*3), iRectangle);  iFactory.CreateRoundedRectangleGeometry(D2D1RoundedRect(D2D1RectF(fLeft, fTop, fLeft*3, fTop*3), 32, 32), iRoundedRectangle);  iFactory.CreateEllipseGeometry(D2D1Ellipse(fPt, fLeft, fTop), iEllipse);  cvs := TDirect2DCanvas.Create(Canvas, ClientRect);  cvs.BeginDraw;  cvs.Pen.Color := clRed;  cvs.Brush.Color := clBlack;  cvs.FillGeometry(iRectangle);  cvs.Brush.Color := clGreen;  cvs.FillGeometry(iRoundedRectangle);  cvs.Brush.Color := clBlue;  cvs.FillGeometry(iEllipse);  cvs.DrawGeometry(iRectangle);  cvs.DrawGeometry(iRoundedRectangle);  cvs.DrawGeometry(iEllipse);  cvs.EndDraw;  cvs.Free;end;procedure TForm1.FormResize(Sender: TObject);begin  Repaint;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.