文档章节

Direct2D (28) : 获取几何图形的面积、线总长度和指定位置的点坐标

涂孟超
 涂孟超
发布于 2014/09/26 15:34
字数 162
阅读 172
收藏 0

精选30+云产品,助力企业轻松上云!>>>


uses Direct2D, D2D1;

procedure TForm1.FormPaint(Sender: TObject);
var
  cvs: TDirect2DCanvas;
  iEllipseGeometry: ID2D1EllipseGeometry;
  area,length: Single;
  rPointF1,rPointF2: TD2DPoint2f;
  ptCenter: TPoint;
begin
  ptCenter := Point(ClientWidth div 2, ClientHeight div 2);
  D2DFactory.CreateEllipseGeometry(D2D1Ellipse(ptCenter, ClientWidth/4, ClientHeight/4), iEllipseGeometry);

  {获取面积与周长}
  iEllipseGeometry.ComputeArea(TD2DMatrix3x2F.Identity, 0, area);
  iEllipseGeometry.ComputeLength(TD2DMatrix3x2F.Identity, 0, length);

  {获取图形的起始处和 1/4 处的点}
  iEllipseGeometry.ComputePointAtLength(0, TD2DMatrix3x2F.Identity, 0, @rPointF1, nil);
  iEllipseGeometry.ComputePointAtLength(length/4, TD2DMatrix3x2F.Identity, 0, @rPointF2, nil);

  cvs := TDirect2DCanvas.Create(Canvas, ClientRect);
  cvs.BeginDraw;
  cvs.RenderTarget.Clear(D2D1ColorF(clWhite));

  cvs.Font.Size := 9;
  cvs.TextOut(5, 5, Format('面积: %f; 周长: %f', [area, length]));

  cvs.DrawGeometry(iEllipseGeometry);

  cvs.MoveTo(ptCenter.X, ptCenter.Y);
  cvs.LineTo(Trunc(rPointF1.x), Trunc(rPointF1.y));
  cvs.MoveTo(ptCenter.X, ptCenter.Y);
  cvs.LineTo(Trunc(rPointF2.x), Trunc(rPointF2.y));

  cvs.EndDraw;
  cvs.Free;
end;

procedure TForm1.FormResize(Sender: TObject);
begin
  Repaint;
end;


效果图:



涂孟超
粉丝 13
博文 2011
码字总数 14107
作品 0
深圳
程序员
私信 提问
加载中
请先登录后再评论。
第8章PostGIS参考

第8章PostGIS参考 第8章PostGIS参考 目录 8.1。PostGIS几何/地理/盒子数据类型 8.2。表管理功能 8.3。几何构造函数 8.4。几何存取器 8.5。几何编辑器 8.6。几何验证 8.7。空间参考系统功能 ...

osc_op3x65ho
01/19
11
0
Direct2D处理几何图形之间的碰撞检测(上)

原文:Direct2D处理几何图形之间的碰撞检测(上) 转载请注明出处:http://www.cnblogs.com/Ray1024 一、概述 Direct2D中支持以下几种类型的几何图形:   a.简单几何图形(Simple Geometry)...

osc_k11w4vu5
2019/05/06
1
0
Matlab geom3d函数注释

Matlab geom3d函数解析geom3d函数库 geom3d库的目的是处理和可视化三维几何原语,如点、线、平面、多面体等。它提供了操作三维几何原语的底层功能,使得开发更复杂的几何算法变得更加容易。 ...

osc_ddwjgohl
2019/11/29
14
0
地图渲染技术(2)瓦片矢量数据格式

地图经过切割后形成了瓦片,每一个编号对于一个瓦片,瓦片可以是栅格数据也可以是矢量数据,栅格数据就是一张正方形图片,渲染时只需要将这张图片作为纹理贴到指定位置就行可以,栅格瓦片的缺...

osc_tek5189e
2018/03/03
5
0
OpenLayers API整理

整理的Openlayers 的知识笔记,随着运用不断加深理解,也会不断更新。 本文链接:Openlayers API整理 作者:狐狸家的鱼 GitHub:八至 一、创建地图 1、地图 创建地图底图:需要用 地图是由图...

osc_two9vbkq
2019/05/07
16
0

没有更多内容

加载失败,请刷新页面

加载更多

在创建临时表之前检查是否存在临时表,并删除是否存在

问题: I am using the following code to check if the temporary table exists and drop the table if it exists before creating again. 我正在使用以下代码检查临时表是否存在,并在重新......

javail
59分钟前
24
0
动态规划:LC198.打家劫舍

题目描述: 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入...

曦鱼violet
今天
30
0
OSChina 周一乱弹 —— 南方水到底多深

Osc乱弹歌单(2020)请戳(这里) 【今日歌曲】 @薛定谔的兄弟 :分享洛神有语创建的歌单「我喜欢的音乐」: Various Artists-用印度乐器演奏苏联国歌(洛天侬 remix) 手机党少年们想听歌,请...

小小编辑
今天
56
0
快递100云平台的安全措施--API限流

2、热点参数限流 注意: 若 entry 的时候传入了热点参数,那么 exit 的时候也一定要带上对应的参数(exit(count, args)),否则可能会有统计错误。 3、通过 ParamFlowRuleManager 的 loadRu...

bykk
今天
19
0
在Bash中重定向stderr和stdout - Redirect stderr and stdout in Bash

问题: I want to redirect both stdout and stderr of a process to a single file. 我想将一个进程的stdout和stderr都重定向到一个文件。 How do I do that in Bash? 我该如何在Bash中做到...

富含淀粉
今天
13
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部