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 ...
随机推荐
- 南阳oj-ASCII码排序-用了一个晚上
#include <iostream> #include <sstream> #include <stdio.h> #include <string> ...
- apache spark kubernets 部署试用
spark 是一个不错的平台,支持rdd 分析stream 机器学习... 以下为使用kubernetes 部署的说明,以及注意的地方 具体的容器镜像使用别人已经构建好的 deploy yaml 文件 ...
- mySQL教程 第1章 数据库设计
E-R设计 很多同学在学SQL语句时,觉得非常困难,那是因为你在学一个你根本不了解的数据库,数据库中的表不是你设计的,表与表之间的关系你不明白.因此在学SQL语句之前,先介绍一下数据库设计. 下面举例 ...
- c# ProgressBar进度条方向和美观
protected override CreateParams CreateParams { get { CreateParams cp = base.CreateParams; cp.Style | ...
- [boost] : asser库用法
基本用法 需要包含头文件#include <boost/assert.hpp> assert库定义了两个断言宏 BOOST_ASSERT BOOSE_ASSERT_MSG 第一种形式等价于 ...
- SQL 计算某月有多少天
今天用SQL Server 2005写查询语句,要求计算一个月平均每天发生的金额.以前往往喜欢查询相关的所有列,在代码中进行计算,还没有在SQL中写过. 第一印象就是:要考虑到润年还是平年,再判断是大 ...
- string截断
public static string GetFirstString(string stringToSub, int length) { Regex regex ...
- IIS6与IIS7在编程实现HTTPS绑定时的细微差别
本文章其实最主要信息是: 问题出在那个小小的*号上——IIS6中不支持通配符,第一部分为空时表示(All Unsigned),而IIS7中同时支持空或通配符的写法,如果为空则自动转为*:443:,我们 ...
- 【Hibernate异常处理-1】java.lang.NoSuchMethodError: javax.persistence.JoinColumn.foreignKey()Ljavax/persistence/ForeignKey;
原文链接(经验证正确) 说明:其他几个涉及到:NoSuchMethodError: javax.persistence.xxx的处理方法和这相同. JAVAEE6.0中的 javax.persist ...
- python 用到的函数记录
1. ctime() 获取当前的时间 2. import random random.randint(0,99) 随机产生0到99之间的数值 (包含0和99) (整数!!) 3. 往列表添加数值 l ...