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;
    


    效果图:



  • 相关阅读:
    父div的透明度不影响子div透明度
    vue-组件命名
    前端页面优化技巧
    Webstorm添加新建.vue文件功能并支持高亮vue语法和es6语法
    防止被坑
    vue安装教程总结
    vue找错
    前段进阶之路
    VM4061 layui.js:2 Layui hint: form is not a valid module
    三月十一号
  • 原文地址:https://www.cnblogs.com/del/p/2006914.html
Copyright © 2011-2022 走看看