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 ...
随机推荐
- LG3684 [CERC2016]机棚障碍 Hangar Hurdles
题意 题目描述 你正在评估一些关于一个巨型飞机仓库的建设计划.飞机仓库的地面可以表示为n行n列的网格图,其中每个格子要么是空的,要么有障碍物.行从上到下依次被编号为1到n,列从左到右依次被编号为1到n ...
- JavaWeb学习总结(二)-修改Tomcat服务器的端口(半年之后再总结)
一.Tomcat服务器端口的配置 Tomcat的所有配置都放在conf文件夹之中,里面的server.xml文件是配置的核心文件(hibernate.cfg.xml是核心配置文件). 如果想修改Tom ...
- [NN] 对于BackPropagation(BP, 误差反向传播)的一些理解
本文大量参照 David E. Rumelhart, Geoffrey E. Hinton and Ronald J. Williams, Learning representation by bac ...
- TP5 首页导航一级和二级分类
<ul id="jsddm"> <li><a class="navi_home" href="{:url('/index ...
- 打开Visual Studio 2012的解决方案 连接 Dynamics CRM 2011 的Connect to Dynamics CRM Server 在其工具下没有显示
一.使用TFS 代码管理,发现Visual Studio 2012 菜单栏 工具下的Connect to Dynamics CRM Server 没有显示. 平常打开VS下的工具都会出现Connect ...
- 【python】实例-判断用户输入数字的类型
num=input("please input the num: ") print "the number your input is: "+str(num) ...
- WCF揭秘学习笔记(4):可信赖会话、会话管理、队列、事务
可信赖会话 WCF的可信赖会话在绑定层保证消息只会被传输一次,并且保证消息间的顺序.当使用TCP通信时,协议本身保证了可靠性,但它只在两点间的网络 包这个层面提供了这样的保证.WCF的可信赖会话特性保 ...
- dede 添加自定义函数
include/extend.func.php里添加函数 function GetTopTags($str){$dsql = new Dedesql(false);$row = $dsql->G ...
- gcc gdb调试 (三)
编写代码过程中少不了调试.在windows下面,我们有visual studio工具.在linux下面呢,实际上除了gdb工具之外,你没有别的选择.那么,怎么用gdb进行调试呢?我们可以一步一步来试试 ...
- 【Hibernate学习笔记-5.1】使用@Transient修饰不想持久保存的属性
作者:ssslinppp 1. 摘要 在默认情况下,持久化类的所有属性会自动映射到数据表的数据列.如果在实际应用中不想持久化保存某些属性,则可以考虑使用@Transient来修饰他们. ...