Firemonkey 绘图 TPathData
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的更多相关文章
- FireMonkey 绘图(1)
FireMonkey 绘图(1) FMX 的 Canvas 在不同的系统上会分别使用:WinVista.Win7: D2D (FMX.Canvas.D2D.pas)WinXP: GDI+ (FMX.C ...
- [原创] 改善 Firemonkey Canvas 几何绘图质量问题(移动平台)
说明: Fiiremonkey 的跨平台能力,大家有目共睹(一码同介面跨四平台),唯独移动平台在几何绘图方面,质量始终不尽人意,我也曾试着去修正(如:修正曲线平滑问题),也曾找过第三方案(如:AggP ...
- FireMonkey 源码学习(3)
五.TTextLayoutNG 在FMX.TextLayout.GPU.pas文件中,实现了几个基础功能,其中: (1)渲染单元 在TextLayout中,每一批同字体和颜色的1~n个字符,组成一个最 ...
- [试玩] FMXLinux (Firemonkey for Linux) Linux 桌面开发(第三方插件)
FMXLinux 是一个可以用来开发 Linux 桌面软件的第三方插件,它需要配合 Delphi 10.2 Toyko 官网:http://www.fmxlinux.com/ 使用方法:开启 FMX ...
- [示例] Firemonkey 画出 1 点像素的线
说明:在 Firemonkey 在移动平台 Android & iOS 要直接在 Canvas 画出 1 点像素的线,似乎有点困难,不过利用一点小技巧,还是能达到这个要求的,首先要建立一个 B ...
- FireMonkey 结构性初略分析
Delphi 下的FireMonkey,很好地实现了 DirectUI与跨平台.学习了解他,对DirectUI编程及项目的跨平台实现有一定帮助.虽然作为开发者个体,并不需要了解太多这些东西,只要求拿来 ...
- Canvas绘图之平移translate、旋转rotate、缩放scale
画布操作介绍 画布绘图的环境通过translate(),scale(),rotate(), setTransform()和transform()来改变,它们会对画布的变换矩阵产生影响. 函数 方法 描 ...
- 用html5的canvas和JavaScript创建一个绘图程序
本文将引导你使用canvas和JavaScript创建一个简单的绘图程序. 创建canvas元素 首先准备容器Canvas元素,接下来所有的事情都会在JavaScript里面. <canvas ...
- echarts+php+mysql 绘图实例
最近在学习php+mysql,因为之前画图表都是直接在echart的实例demo中修改数据,便想着两相结合练习一下,通过ajax调用后台数据画图表. 我使用的是echart3,相比较第二版,echar ...
随机推荐
- All the Apache Streaming Projects: An Exploratory Guide
The speed at which data is generated, consumed, processed, and analyzed is increasing at an unbeliev ...
- 使用MQ要考虑的问题
一般现代软件系统都会用到MQ,几乎所有开发人员也都会想到用MQ,但真正能用好的人估计不多,因为要用好MQ有很多方面问题要考虑: 1.在原直接交互的系统间增加MQ中间层,MQ的性能.可靠程度会严重影响原 ...
- JZ2440 裸机驱动 第14章 ADC和触摸屏接口
本章目标: 了解S3C2410/S3C2440和触摸屏的结构: 了解电阻触摸屏的工作原理和等效电路图: 了解S3C2410/S3C2440触摸屏控制器的多种工作模式: ...
- 【appium】根据name定位元素
目前没有尝试成功,等成功后补充 个人建议可以尝试先用view显示的文本作为name看是否能拿到该控件,按照我个人的经验一般都是会成功的,所以我很怀疑安卓上面控件的name是否就等于text.
- Real FFT
[文/告别年代 Email:byeyear@hotmail.com] FFT算法是针对复信号的,而现实场景中很多时候时域是实信号,此时有两种办法加快FFT的速度. 1. 使用一个N点的复FFT同时 ...
- app定位器带xpath的 uiautomatorviewer
参考文档:http://blog.csdn.net/kaka1121/article/details/53301517 在写脚本的过程中,总是遇到标签没有ID或者name等类似的唯一识别属性,为了能识 ...
- RDD之四:Value型Transformation算子
处理数据类型为Value型的Transformation算子可以根据RDD变换算子的输入分区与输出分区关系分为以下几种类型: 1)输入分区与输出分区一对一型 2)输入分区与输出分区多对一型 3)输入分 ...
- 1092 To Buy or Not to Buy (20 分)
1092 To Buy or Not to Buy (20 分) Eva would like to make a string of beads with her favorite colors s ...
- Android logcat命令详解
一.logcat命令介绍 1.android log系统 2.logcat介绍 logcat是android中的一个命令行工具,可以用于得到程序的log信息 log类是一个日志类,可以在代码中使用lo ...
- 微信公众平台测试帐号的注册与使用(自己的服务器<---->微信后台<---->测式公众号)
打开注册的网址:http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login 用手机微信扫描网页左边的二维码,然后在手机上确认即可: 至此 ...