FMX 的 Canvas 在不同的系统上会分别使用:
WinVista、Win7: D2D (FMX.Canvas.D2D.pas)
WinXP: GDI+ (FMX.Canvas.GDIP.pas)
Mac 系列: Core Graphics (FMX.Canvas.Mac.pas)

和 HTML5 中的 Canvas 非常类似, 现在的 Canvas 模糊了 Pen 的概念:
之前的 Canvas.Pen 对应: Canvas.Stroke;
之前的 Canvas.Brush 对应: Canvas.Fill.

在 FMX 中, Canvas 无处不在, 其 Canvas.Stroke、Canvas.Fill 的状态也各不相同, 一般要先初始化它们.



测试: 窗体上放 Button1、Panel1, 激活 Panel1 的 OnPaint 事件:

procedure TForm1.FormCreate(Sender: TObject);
begin
  Self.OnPaint := Panel1.OnPaint;
  Button1.OnPaint := Panel1.OnPaint;
  Panel1.Opacity := 0.75;
end; procedure TForm1.Panel1Paint(Sender: TObject; Canvas: TCanvas; const ARect: TRectF);
begin
  {画直线}
  Canvas.Stroke.Kind := TBrushKind.bkSolid;
//  Canvas.Stroke.Color := claBlack;
  Canvas.DrawLine(ARect.Location, ARect.BottomRight, );   {填充椭圆}
//  Canvas.Fill.Kind := TBrushKind.bkSolid;
  Canvas.Fill.Color := claGreen;
  Canvas.FillEllipse(RectF(ARect.Width/, ARect.Height/, ARect.Width/*, ARect.Height/*), );
end;

效果图:




绘图命令:

Canvas.DrawLine();      //
Canvas.DrawRect();      //画矩形; 集合 TCorners: 四个角是否使用指定的样式类型; 枚举 TCornerType: 角样式类型
Canvas.DrawRectSides(); //画矩形边; 集合 TSides 指定要画的边
Canvas.DrawEllipse();  //
Canvas.DrawArc();      //
Canvas.DrawPath();      //
Canvas.DrawBitmap();    //
Canvas.DrawThumbnail(); //画略缩图
Canvas.DrawPolygon();  //
Canvas.FillRect();      //
Canvas.FillEllipse();  //
Canvas.FillArc();      //
Canvas.FillPath();      //
Canvas.FillPolygon();  //
Canvas.FillText();      // {测试文本输出}
procedure TForm1.Panel1Paint(Sender: TObject; Canvas: TCanvas; const ARect: TRectF);
begin
  Canvas.Fill.Color := claRed;
  Canvas.Font.Size := ;
  Canvas.FillText(ARect, '万一的 Delphi 博客', True, , [], TTextAlign.taLeading, TTextAlign.taCenter);
end;

FireMonkey 绘图(1)的更多相关文章

  1. Firemonkey 绘图 TPathData

    Firemonkey  TPathData TPath控件 procedure TForm12.FormPaint( Sender : TObject; Canvas : TCanvas; const ...

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

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

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

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

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

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

  5. FireMonkey 结构性初略分析

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

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

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

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

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

  8. echarts+php+mysql 绘图实例

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

  9. html5 canvas常用api总结(二)--绘图API

    canvas可以绘制出很多奇妙的样式和美丽的效果,通过几个简单的api就可以在画布上呈现出千变万化的效果,还可以制作网页游戏,接下来就总结一下和绘图有关的API. 绘画的时候canvas相当于画布,而 ...

随机推荐

  1. C语言几种常用的排序算法

    /* ============================================================================= 相关知识介绍(所有定义只为帮助读者理解 ...

  2. Nginx 故障实例

    linux vi 操作提示 Found a swap file by the name "/usr/local/nginx/conf/.nginx.conf.swp" 解决方法: ...

  3. 四、Signalr手持令牌验证

    一.JWT 服务端在respose中设置好cookie,浏览器发请求都会自动带上,不需要做额外设置 但是如果客户端是非浏览器,或者要兼容多种客户端,这个方法就不行了 Js端 @{ Layout = n ...

  4. apache 修改文件上传大小限制

    Windows 环境下的修改方法 ================================================================ 第一步:修改在php5下POST文件 ...

  5. 【转载】VMware下的Ubuntu用ifconfig不能显示ip地址的解决方案

    转载于 http://blog.163.com/wjn_mcu/blog/static/23801601620146161062704/ 背景 在虚拟机下运行操作系统,尤其是Linux系统已经是非常常 ...

  6. 牛客OI周赛13-提高组 比赛总结

    比赛情况 1h才写出T1 100pts + T2 50pts(都是简单dp可还行).然后就去颓废了.颓废完来康康T3的暴力,wow,T3咋这么难呢!?期望概率好像不太会了,退了吧qwq. 所以最后 1 ...

  7. SpringMVC入门示例

    1.新建一个Java Web项目 2.导入jar包 3.在WEB-INF下面建一个hello.jsp页面. 1 <%@ page language="java" import ...

  8. 第四篇:存储库之mongodb、redis、mysql

    MongoDB的简单操作 一.简介 二.MongoDB基础知识 三.安装 四.基本数据类型 五.增删改查操作 六.可视化工具 七.pymongo 一.简介 MongoDB是一款强大.灵活.且易于扩展的 ...

  9. 【NOIP2012模拟11.1】塔(加强)

    题目 玩完骰子游戏之后,你已经不满足于骰子游戏了,你要玩更高级的游戏. 今天你瞄准了下述的好玩的游戏: 首先是主角:塔.你有N座塔一列排开.每座塔各自有高度,有可能相等. 这个游戏就不需要地图了. 你 ...

  10. 【leetcode】689. Maximum Sum of 3 Non-Overlapping Subarrays

    题目如下: In a given array nums of positive integers, find three non-overlapping subarrays with maximum ...