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. IBM DS存储存储性能调优

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/jaminwm/article/details/26458791 ibm存储适用,其它存储有相似參数. ...

  2. web上传照片

    .toDataURL() FileReader对象也有类似的方法,比如.readAsDataURL(),然而它只接受file或blob类型,而这两种类型一般只能通过<input[type=fil ...

  3. mime type 类型名字应该用多长的字段?

    在使用 FastAdmin 时有 mimetype 字段使用了 50 长度,有小伙伴反应,不够. 在 Linux 服务器上时 xlsx 文件的 mimetype  是 application/vnd. ...

  4. bzoj 3687 简单题——bitset

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3687 关于 bitset :https://blog.csdn.net/snowy_smil ...

  5. Angular 4 依赖注入

    一.依赖注入 1. 创建工程 ng new myangular 2. 创建组件 ng g componet product1 3. 创建服务 ng g service shared/product 如 ...

  6. hadoop项目开发案例方案汇总

    大数据Hadoop应用开发技术正可谓如火如荼推进中,以为大数据已经不仅仅是局限在互联网领域,而是已经被上升到了国家战略的高度层面.大数据正在深刻影响和改变我们的日常生活和工作方式. Hadoop应用开 ...

  7. ML(4.2): R CART

    CART模型 :即Classification And Regression Trees.它和一般回归分析类似,是用来对变量进行解释和预测的工具,也是数据挖掘中的一种常用算法.如果因变量是连续数据,相 ...

  8. gdb 调试(设置变量)(六)

    一旦使用GDB挂上被调试程序,当程序运行起来后,你可以根据自己的调试思路来动态地在GDB中更改当前被调试程序的运行线路或是其变量的值,这个强大的功能能够让你更好的调试你的程序,比如,你可以在程序的一次 ...

  9. C/C++动态分配连续空间,下标越界导致的free():invalid next size问题

    昨天帮导师做的一个程序出了内存泄露的bug(在VS上程序运行一切正常,等return返回后才出错) 而且是程序运行结束后才出现的错误,在退出前一切代码都顺利执行完了,只是return之后出错. 之后我 ...

  10. [转]ASP.net Application 生命周期事件

    生命周期事件和 Global.asax 文件 在应用程序的生命周期期间,应用程序会引发可处理的事件并调用可重写的特定方法.若要处理应用程序事件或方法,可以在应用程序根目录中创建一个名为 Global. ...