文档章节

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

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

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;


效果图:



本文转载自:http://www.cnblogs.com/del/archive/2011/04/07/2008119.html

共有 人打赏支持
涂孟超
粉丝 12
博文 2011
码字总数 14107
作品 0
深圳
程序员
SQL Servr 2008空间数据应用系列一:空间信息基础

  Microsoft SQL Server 2008 提供了全面性的空间支持,可让组织通过具空间功能的应用程序来无缝地取用、使用及扩展以位置为基础的数据,最后可协助用户做出更好的决策。空间分析是一项非常...

beniao
2011/01/19
0
0
Direct2D教程(十一)几何变换

什么是几何变换(Transform) 在图形学中,主要有三种几何变换,分别是平移(Translate),旋转(Rotation)和缩放(Scaling)。在D2D中,这三种变换都有实现,而且还有一种不太常见的变换,...

吞吞吐吐的
2017/09/12
0
0
canvas图表(2) - 折线图

原文地址:canvas图表(2) - 折线图 话说这天气一冷啊, 就患懒癌, 就不想码代码, 就想着在床上舒舒服服看视频. 那顺便就看blender视频, 学习下3D建模, 如果学会了建3D模型, 那我的webGL技术就...

Jeff.Zhong
2017/11/21
0
0
Windows桌面应用程序(1-2-4-7th) DPI和设备无关的像素

要使用Windows图形进行有效编程,您必须了解两个相关的概念: 每英寸点数(DPI) 设备无关像素(DIP)。 我们从DPI开始。这将需要短暂的绕行排版。在印刷术中,类型的大小以称为点的单位来测量。一点...

qq_37422196
01/12
0
0
GeoPandas官方中文文档--译著

GeoPandas是基于Pandas的扩展,增加了地理空间几何对象的处理,本文翻译来自于http://www.cnblogs.com/giserliu/p/4988615.html。原文和工程在http://geopandas.org/。 GeoPandas官方中文文档...

openthings
2016/01/12
241
0

没有更多内容

加载失败,请刷新页面

加载更多

解决访问swaggerUI接口文档显示basic-error-controler问题

使用swagger生成接口文档后,访问http://localhost:8888/swagger-ui.html#/,显示如下: 解决方法: public Docket createRestApi() {return new Docket(DocumentationType.SWAGGER_2)......

张欢19933
20分钟前
1
0
区块链教程以太坊源码分析core-state-process源码分析(二)

兄弟连区块链教程以太坊源码分析core-state-process源码分析(二):关于g0的计算,在黄皮书上由详细的介绍和黄皮书有一定出入的部分在于if contractCreation && homestead {igas.SetUin...

兄弟连区块链入门教程
25分钟前
0
0
BLAKE2 — fast secure hashing

BLAKE2 — fast secure hashing SPECS | CODE | B2SUM | CONTACT | USERS | THIRD-PARTY SOFTWARE | CRYPTANALYSIS | FAQ Come from http://www.blake2.net/ BLAKE2 is a cryptographic has......

openthings
31分钟前
4
0
Titan Framework MongoDB深入理解3

在前两篇文章中,我们介绍了操作Mongo数据库的类型Curd和Finder,下面要理解的是框架内mongoDB操作的条件类型——MongoDBQueryCondition。 MongoDBQueryCondition是一个接口,规定了一些实现...

云季科技
31分钟前
0
0
数据结构(算法)-树

#include <iostream>#include <malloc.h>using namespace std;#define MaxSize 100typedef char ElemType;typedef struct node{ElemType data;struct node *left ,*......

ashuo
34分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部