zoukankan      html  css  js  c++  java
  • Direct2D (25) : 将画笔线条所占用的区域转换为路径 ID2D1Geometry.Widen()


    uses Direct2D, D2D1;
    
    procedure TForm1.FormPaint(Sender: TObject);
    var
      cvs: TDirect2DCanvas;
      iGeometry: ID2D1Geometry;
      iPathGeometry: ID2D1PathGeometry;
      iGeometrySink: ID2D1GeometrySink;
    begin
      {建立一个几何对象 iGeometry}
      D2DFactory.CreateEllipseGeometry(
        D2D1Ellipse(D2D1PointF(ClientWidth/2, ClientHeight/2), ClientWidth/4, ClientHeight/4),
        ID2D1EllipseGeometry(iGeometry)
      );
    
      cvs := TDirect2DCanvas.Create(Canvas, ClientRect);
      cvs.BeginDraw;
    
      {绘制 iGeometry}
      cvs.Pen.Color := clYellow;
      cvs.Pen.Width := 25;
      cvs.DrawGeometry(iGeometry);
    
      {创建 iPathGeometry,并把 iGeometry 的线条所占用的区域转换成新的路径到 iPathGeometry}
      D2DFactory.CreatePathGeometry(iPathGeometry);
      iPathGeometry.Open(iGeometrySink);
      iGeometry.Widen(25, nil, TD2DMatrix3x2F.Identity, 0, iGeometrySink); //参数4是曲直容差,效果图中包含把它设为 9 的演示
      iGeometrySink.Close;
    
      {绘制 iPathGeometry}
      cvs.Pen.Color := clRed;
      cvs.Pen.Width := 1;
      cvs.DrawGeometry(iPathGeometry);
    
      cvs.EndDraw;
      cvs.Free;
    end;
    
    procedure TForm1.FormResize(Sender: TObject);
    begin
      Repaint;
    end;
    


    效果图:



  • 相关阅读:
    ubuntu(16.04.01)学习-day2
    python学习day5--set、函数
    ubuntu(16.04.01)学习-day1
    nosql
    redis学习-day1
    scrapy框架梳理
    io多路复用--本质
    异步非阻塞--高性能相关
    爬虫设计模式总结
    requests模块参数介绍
  • 原文地址:https://www.cnblogs.com/del/p/2007676.html
Copyright © 2011-2022 走看看