博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Direct2D (26) : 获取几何图形的边界
阅读量:5207 次
发布时间:2019-06-14

本文共 1096 字,大约阅读时间需要 3 分钟。

{相关方法}ID2D1Geometry.GetBounds();        //获取边界矩形ID2D1Geometry.GetWidenedBounds(); //获取包含画笔区域的边界矩形

测试代码:

uses Direct2D, D2D1;procedure TForm1.FormPaint(Sender: TObject);var  cvs: TDirect2DCanvas;  iGeometry: ID2D1EllipseGeometry;  R1,R2: TD2DRectF;  iBrush: ID2D1SolidColorBrush;begin  {几何图形}  D2DFactory.CreateEllipseGeometry(D2D1Ellipse(D2D1PointF(ClientWidth/2, ClientHeight/2), ClientWidth/4, ClientHeight/4), iGeometry);  {分别获取两种类型的边界}  iGeometry.GetBounds(TD2DMatrix3x2F.Identity, R1);  iGeometry.GetWidenedBounds(25, nil, TD2DMatrix3x2F.Identity, 0, R2);  cvs := TDirect2DCanvas.Create(Canvas, ClientRect);  cvs.BeginDraw;  cvs.RenderTarget.Clear(D2D1ColorF(clWhite));  {绘制原图形}  cvs.RenderTarget.CreateSolidColorBrush(D2D1ColorF(clRed, 0.75), nil, iBrush);  cvs.RenderTarget.FillGeometry(iGeometry, iBrush);  {绘制边界}  iBrush.SetOpacity(1);  cvs.RenderTarget.DrawRectangle(R1, iBrush);  cvs.RenderTarget.DrawRectangle(R2, iBrush);  cvs.EndDraw;  cvs.Free;end;procedure TForm1.FormResize(Sender: TObject);begin  Repaint;end;

效果图:
o_201104072.png

转载于:https://www.cnblogs.com/del/archive/2011/04/07/2007730.html

你可能感兴趣的文章
Swift - 异步加载各网站的favicon图标,并在单元格中显示
查看>>
Java编程思想总结笔记Chapter 5
查看>>
51 nod 最大距离
查看>>
[LeetCode]662. Maximum Width of Binary Tree判断树的宽度
查看>>
WinForm聊天室
查看>>
ASCII码表含义
查看>>
Updlock 与 Holdlock
查看>>
Python 从零学起(纯基础) 笔记(一)
查看>>
【Python学习笔记】1.基础知识
查看>>
梦断代码阅读笔记02
查看>>
Java 线程安全问题
查看>>
selenium学习中遇到的问题
查看>>
大数据学习之一——了解简单概念
查看>>
P1-13:集成日志组件 logback 2彩色日志
查看>>
昨天开始接任务
查看>>
Linux升级内核教程(CentOS7)
查看>>
JDK5.0 特性 监控与管理虚拟机
查看>>
Lintcode: Partition Array
查看>>
分享适合个人站长的5类型网站
查看>>
类别的三个作用
查看>>