文档章节

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
2018/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

没有更多内容

加载失败,请刷新页面

加载更多

CSS 选择器参考手册

CSS 选择器参考手册 选择器 描述 [attribute] 用于选取带有指定属性的元素。 [attribute=value] 用于选取带有指定属性和值的元素。 [attribute~=value] 用于选取属性值中包含指定词汇的元素。...

Jack088
今天
1
0
数据库篇一

数据库篇 第1章 数据库介绍 1.1 数据库概述  什么是数据库(DB:DataBase) 数据库就是存储数据的仓库,其本质是一个文件系统,数据按照特定的格式将数据存储起来,用户可以对数据库中的数据...

stars永恒
今天
2
0
Intellij IDEA中设置了jsp页面,但是在访问页面时却提示404

在Intellij IDEA中设置了spring boot的jsp页面,但是在访问时,却出现404,Not Found,经过查找资料后解决,步骤如下: 在Run/Debug Configurations面板中设置该程序的Working Directory选项...

uknow8692
昨天
3
0
day24:文档第五行增内容|每月1号压缩/etc/目录|过滤文本重复次数多的10个单词|人员分组|

1、在文本文档1.txt里第五行下面增加如下内容;两个方法; # This is a test file.# Test insert line into this file. 分析:给文档后增加内容,可以用sed 来搞定;也可以用while do done...

芬野de博客
昨天
3
0
深入理解JVM—JVM内存模型

深入理解JVM—JVM内存模型 我们知道,计算机CPU和内存的交互是最频繁的,内存是我们的高速缓存区,用户磁盘和CPU的交互,而CPU运转速度越来越快,磁盘远远跟不上CPU的读写速度,才设计了内存...

onedotdot
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部