Firemonkey  TPathData

TPath控件

procedure TForm12.FormPaint(
Sender : TObject;
Canvas : TCanvas;
const ARect : TRectF );
var
APath : TPathData;
MyRect1, MyRect2 : TRectF;
begin
MyRect1 := TRectF.Create( , , , );
MyRect2 := TRectF.Create( , , , );
APath := TPathData.Create;
APath.AddEllipse( MyRect1 );
APath.AddRectangle( MyRect2, , , AllCorners ); self.Canvas.DrawPath( APath, );
Canvas.Fill.Color := TAlphaColorRec.Red;
Canvas.FillPath( APath, );
APath.DisposeOf; end;
  Canvas.Stroke.Color := TAlphaColorRec.Black;
Canvas.Stroke.Kind := tbrushkind.Solid; APath .MoveTo(p1);
APath .LineTo(p2);
APath .LineTo(p3);
APath .LineTo(p4);
APath .LineTo(p5);
APath .LineTo(p6);
APath .LineTo(p7);
APath .LineTo(p8);
APath .LineTo(p1);
self.Canvas.BeginScene; self.Canvas.DrawPath(APath , );
Canvas.EndScene;
APath.DisposeOf;

Inkscape 0.91

https://inkscape.org/en/download/windows/

PathData SVG编辑

SVG知识参考

http://www.w3school.com.cn/svg/svg_path.asp

M = moveto(M X,Y) :将画笔移动到指定的坐标位置
L = lineto(L X,Y) :画直线到指定的坐标位置
H = horizontal lineto(H X):画水平线到指定的X坐标位置
V = vertical lineto(V Y):画垂直线到指定的Y坐标位置
C = curveto(C X1,Y1,X2,Y2,ENDX,ENDY):三次贝赛曲线
S = smooth curveto(S X2,Y2,ENDX,ENDY)
Q = quadratic Belzier curve(Q X,Y,ENDX,ENDY):二次贝赛曲线
T = smooth quadratic Belzier curveto(T ENDX,ENDY):映射
A = elliptical Arc(A RX,RY,XROTATION,FLAG1,FLAG2,X,Y):弧线
Z =closepath():关闭路径

画一个三角形

M250 150 L150 350 L350 350 Z

半圆

m 200,250 a 150,30 0 1 0 0,70

电池

M0,4 L4,4 L4,0 L8,0 L8,12 L4,12 L4,8 L0,8 L0,4 M8,0 L16,0 L16,12 L8,12 Z

添加path路径AddPath

procedure TForm7.FormCreate(Sender: TObject);
var
apath: TPathData;
rect: TRect;
bpath: TPathData;
begin apath := TPathData.Create;
apath.MoveTo(TPointF.Create(, ));
apath.LineTo(TPointF.Create(, ));
apath.LineTo(TPointF.Create(, ));
apath.LineTo(TPointF.Create(, ));
apath.LineTo(TPointF.Create(, ));
apath.LineTo(TPointF.Create(, ));
apath.LineTo(TPointF.Create(, ));
apath.LineTo(TPointF.Create(, ));
apath.LineTo(TPointF.Create(, )); bpath := TPathData.Create;
bpath.AddRectangle(TRectF.Create(, , , ), , , AllCorners); Path1.Data.AddPath(apath);
Path1.Data.AddPath(bpath); end;

Firemonkey 绘图 TPathData的更多相关文章

  1. FireMonkey 绘图(1)

    FireMonkey 绘图(1) FMX 的 Canvas 在不同的系统上会分别使用:WinVista.Win7: D2D (FMX.Canvas.D2D.pas)WinXP: GDI+ (FMX.C ...

  2. [原创] 改善 Firemonkey Canvas 几何绘图质量问题(移动平台)

    说明: Fiiremonkey 的跨平台能力,大家有目共睹(一码同介面跨四平台),唯独移动平台在几何绘图方面,质量始终不尽人意,我也曾试着去修正(如:修正曲线平滑问题),也曾找过第三方案(如:AggP ...

  3. FireMonkey 源码学习(3)

    五.TTextLayoutNG 在FMX.TextLayout.GPU.pas文件中,实现了几个基础功能,其中: (1)渲染单元 在TextLayout中,每一批同字体和颜色的1~n个字符,组成一个最 ...

  4. [试玩] FMXLinux (Firemonkey for Linux) Linux 桌面开发(第三方插件)

    FMXLinux 是一个可以用来开发 Linux 桌面软件的第三方插件,它需要配合 Delphi 10.2 Toyko 官网:http://www.fmxlinux.com/ 使用方法:开启 FMX ...

  5. [示例] Firemonkey 画出 1 点像素的线

    说明:在 Firemonkey 在移动平台 Android & iOS 要直接在 Canvas 画出 1 点像素的线,似乎有点困难,不过利用一点小技巧,还是能达到这个要求的,首先要建立一个 B ...

  6. FireMonkey 结构性初略分析

    Delphi 下的FireMonkey,很好地实现了 DirectUI与跨平台.学习了解他,对DirectUI编程及项目的跨平台实现有一定帮助.虽然作为开发者个体,并不需要了解太多这些东西,只要求拿来 ...

  7. Canvas绘图之平移translate、旋转rotate、缩放scale

    画布操作介绍 画布绘图的环境通过translate(),scale(),rotate(), setTransform()和transform()来改变,它们会对画布的变换矩阵产生影响. 函数 方法 描 ...

  8. 用html5的canvas和JavaScript创建一个绘图程序

    本文将引导你使用canvas和JavaScript创建一个简单的绘图程序. 创建canvas元素 首先准备容器Canvas元素,接下来所有的事情都会在JavaScript里面. <canvas ...

  9. echarts+php+mysql 绘图实例

    最近在学习php+mysql,因为之前画图表都是直接在echart的实例demo中修改数据,便想着两相结合练习一下,通过ajax调用后台数据画图表. 我使用的是echart3,相比较第二版,echar ...

随机推荐

  1. MyBatis 知识点

    2010年,随着开发团队转投Google Code旗下,ibatis 3.x 正式更名为 Mybatis. orm工具的基本思想 无论是 hibernate.Mybatis,orm工具有一个共同点: ...

  2. php单例模式实现对象只被创建一次 mysql单例操作类

    这是我在php面试题中遇到的一道试题,单例模式按字面来看就是某一个类只有一个实例,这样做的好处还是很大的,比如说数据库的连接,我们只需要实例化一次,不需要每次都去new了,这样极大的降低了资源的耗费. ...

  3. jquery.validate.js remote (php)

    网上的人不厚道呀 validate 这玩意的异步是 返回的 echo 'true'  或者 echo 'false';很少有人说呀~.~  转载了一篇原文: jquery.validate.js对于数 ...

  4. C#下编程完成IIS网络App的权限设置

    转自:http://linwx1978.blog.163.com/blog/static/1504106920101104834271/ 以前的日志中转了不少文章,最近听说转文不是好习惯,决定普世一把 ...

  5. 复分析可视化方法:笔记:log(z)的可视化微分法

    当z转过θ时,我们来看看发生了什么: 左图中的空心箭头代表z的变化量,其长度为rδ,方向为pi/2+θ: 右图中的实心箭头代表log(z)的变化量,其长度为δ,方向为pi/2. 因此,从左图空心箭头到 ...

  6. BASIC-14_蓝桥杯_时间转换

    示例代码: #include <stdio.h> int main(void){ int t = 0 , h = 0 , m = 0 , s = 0 ; scanf("%d&qu ...

  7. 关于office2016桌面新建不显示execl问题

    在百度,google找了很多方法都没有文档可以解决此问题,office2016安装完在新建是由ececl的,应该是我用了清理注册表工具,对execl项进行清理,造成没有execl,所以贴出原版xls, ...

  8. 小峰servlet/jsp(6)jstl核心标签库

    一.引入jstl 需要jstl.jar;standard.jar; 二.jstl核心标签库: c:out         内容输出标签; c:set      用来设置4种属性范围值的标签: c:re ...

  9. PHP PDO 预处理语句与存储过程

    很多更成熟的数据库都支持预处理语句的概念. 什么是预处理语句?可以把它看作是想要运行的 SQL 的一种编译过的模板,它可以使用变量参数进行定制.预处理语句可以带来两大好处: 查询仅需解析(或预处理)一 ...

  10. keras的Embedding层

    keras.layers.embeddings.Embedding(input_dim, output_dim, embeddings_initializer='uniform', embedding ...