zoukankan      html  css  js  c++  java
  • Direct2D (23) : 复合几何对象之 ID2D1GeometryGroup


    uses Direct2D, D2D1;
    
    procedure TForm1.FormPaint(Sender: TObject);
    var
      cvs: TDirect2DCanvas;
      iGeometryGroup: ID2D1GeometryGroup;
      arrGeometry: array[0..3] of ID2D1EllipseGeometry;
      ptCenter: TD2D1Point2F;
      i: Integer;
      rh,rv: Single;
      iFactory: ID2D1Factory;
    begin
      ptCenter := D2D1PointF(ClientWidth/2, ClientHeight/2);
    
      {建立几何对象数组}
      iFactory := D2DFactory();
      rh := ClientWidth / 12;
      rv := ClientHeight / 12;
      for i := 0 to Length(arrGeometry)-1 do
      begin
        iFactory.CreateEllipseGeometry(D2D1Ellipse(ptCenter, rh*(i+1), rv*(i+1)), arrGeometry[i]);
      end;
    
      {建立 ID2D1GeometryGroup 对象}
      D2DFactory.CreateGeometryGroup(
        D2D1_FILL_MODE_ALTERNATE, //另可选 D2D1_FILL_MODE_WINDING,测试效果图演示了两种填充模式的区别
        @arrGeometry[0],
        Length(arrGeometry),
        iGeometryGroup
      );
    
      cvs := TDirect2DCanvas.Create(Canvas, ClientRect);
      cvs.BeginDraw;
      cvs.Brush.Color := clWebCornFlowerBlue;
      cvs.FillGeometry(iGeometryGroup);
      cvs.DrawGeometry(iGeometryGroup);
      cvs.EndDraw;
      cvs.Free;
    end;
    
    procedure TForm1.FormResize(Sender: TObject);
    begin
      Repaint;
    end;
    


    效果图:



  • 相关阅读:
    AGC002
    ICPC 北美Mid Central 2019 Regional
    【洛谷 5020】货币系统
    【洛谷 1109】学生分组
    【洛谷 2915】奶牛混合起来
    【洛谷 4162】最长距离
    【YCOJ 3805】竞选
    【洛谷 2807】最长路
    【洛谷 2918】买干草Buying Hay
    【LOJ 10172】涂抹果酱
  • 原文地址:https://www.cnblogs.com/del/p/2006914.html
Copyright © 2011-2022 走看看