zoukankan      html  css  js  c++  java
  • Direct2D (27) : 获取几何图形的轮廓 ID2D1Geometry.Outline()


    uses Direct2D, D2D1;
    
    procedure TForm1.FormPaint(Sender: TObject);
    var
      cvs: TDirect2DCanvas;
      iEllipseGeometry: ID2D1EllipseGeometry;
      iTransformedGeometrys: array[0..7] of ID2D1TransformedGeometry;
      iGeometryGroup: ID2D1GeometryGroup;
      iGeometrySink: ID2D1GeometrySink;
      iPathGeometry: ID2D1PathGeometry;
      ptCenter: TD2DPoint2f;
      i: Integer;
    begin
      {建立几何对象}
      ptCenter := D2D1PointF(ClientWidth/2, ClientHeight/2);
      for i := 0 to 7 do
      begin
        D2DFactory.CreateEllipseGeometry(D2D1Ellipse(ptCenter, 100, 25), iEllipseGeometry);
        D2DFactory.CreateTransformedGeometry(iEllipseGeometry, TD2DMatrix3x2F.Rotation(360/8*i, ptCenter), iTransformedGeometrys[i]);
      end;
      D2DFactory.CreateGeometryGroup(D2D1_FILL_MODE_WINDING, @iTransformedGeometrys[0], 8, iGeometryGroup);
    
      {获取轮廓到 iPathGeometry}
      D2DFactory.CreatePathGeometry(iPathGeometry);
      iPathGeometry.Open(iGeometrySink);
      iGeometryGroup.Outline(TD2DMatrix3x2F.Identity, 0, iGeometrySink);
      iGeometrySink.Close;
    
      {绘制图形与轮廓}
      cvs := TDirect2DCanvas.Create(Canvas, ClientRect);
      cvs.BeginDraw;
      cvs.RenderTarget.Clear(D2D1ColorF(clWhite));
    
      cvs.Brush.Color := clYellow;
      cvs.Pen.Color := clRed;
      cvs.FillGeometry(iGeometryGroup);
      cvs.DrawGeometry(iGeometryGroup);
    
      cvs.Pen.Brush.Handle.SetOpacity(0.5);
      cvs.Pen.Width := 11;
      cvs.DrawGeometry(iPathGeometry);
    
      cvs.EndDraw;
      cvs.Free;
    end;
    
    procedure TForm1.FormResize(Sender: TObject);
    begin
      Repaint;
    end;
    


    效果图:



  • 相关阅读:
    激活OFFICE2010时,提示choice.exe不是有效的win32程序
    Redis 学习之持久化机制、发布订阅、虚拟内存
    Redis 学习之事务处理
    Redis 学习之主从复制
    Redis 学习之常用命令及安全机制
    Redis 学习之数据类型
    Redis 学习之简介及安装
    Tomcat 虚拟主机配置
    mysql学习之权限管理
    mysql学习之主从复制
  • 原文地址:https://www.cnblogs.com/del/p/2007935.html
Copyright © 2011-2022 走看看