文档章节

FireMonkey 绘图(1)

涂孟超
 涂孟超
发布于 2014/09/26 15:33
字数 271
阅读 8
收藏 0
点赞 0
评论 0

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, 1);

  {填充椭圆}
//  Canvas.Fill.Kind := TBrushKind.bkSolid;
  Canvas.Fill.Color := claGreen;
  Canvas.FillEllipse(RectF(ARect.Width/5, ARect.Height/5, ARect.Width/5*4, ARect.Height/5*4), 1);
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 := 30;
  Canvas.FillText(ARect, '万一的 Delphi 博客', True, 1, [], TTextAlign.taLeading, TTextAlign.taCenter);
end;

本文转载自:http://www.cnblogs.com/del/archive/2011/11/14/2248034.html

共有 人打赏支持
涂孟超
粉丝 12
博文 2004
码字总数 14107
作品 0
深圳
程序员
基于DirectUI 的 SCW- App 主体部分的思路总结

基于DirectUI 的SCW- App 主体部分的思路总结 基于 C++ 的 SC DirectUI 界面库的想法与实现到今天也有近半个月了。一些新的想法与思路在学习和实践中得到了提高。推翻重来,重复再干,虽然是...

iSixther ⋅ 2015/03/22 ⋅ 0

Delphi XE2:这就是我们所期待的Delphi吗?

版权声明:本文为 OSChina.NET 原创编译 转载务必注明出处,并保留链接! 作者:蒂姆.安德森 Delphi是被一些人遗忘了的快速应用程序开发工具,但它与可视组件库相结合,依然是开发Windows本机...

虫虫 ⋅ 2011/10/31 ⋅ 49

学习: Delphi FireMonkey 结构性初略分析

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

iSixther ⋅ 2014/12/27 ⋅ 4

PostgreDAC 2.8.0,Delphi的PostgreSQL组件

PostgreDAC 2.8.0 发布了,该版本首次通过 RAD Studio XE2 支持 Mac OS X 系统,大大提升了 FireMonkey 支持,修复了关于 TPSQLMonitor 的 bug。 完整改进记录: [!] FireMonkey and cross p...

红薯 ⋅ 2012/03/20 ⋅ 1

Delphi XE5 for Android 启动无黑屏等待总结

Delphi XE5 for Android 启动无黑屏等待总结 从embarcadero官方技术论坛找了下参考资料,对黑屏处理应该来说有了相应的办法,并且这种办法具有很好的应用价值,因此做了个总结,Delphi XE5 无黑屏...

vga ⋅ 2014/10/07 ⋅ 0

Delphi XE2 新功能:LiveBindings --- 把对象之间的属性绑定起来

Delphi XE2 新功能:LiveBindings --- 把对象之间的属性绑定起来日期:2011年9月9日 作者: 人气:5340 查看:[大字体 中字体 小字体] XE2 有了 FireMonkey 框架,它不同于 VCL ,以往的数据感...

vga ⋅ 2016/08/09 ⋅ 0

Delphi 发展历史

自然人的软件著作权,保护期为自然人终生及其died后50年;软件是合作开发的,截止于最后died的自然人died后第50年的12月31日。法人或者其他组织的软件著作权,保护期为软件首次发表之后50年,...

vga ⋅ 2014/05/13 ⋅ 2

Google Keep绘图新功能:五个使用技巧让笔记中手写和图片标注更加方便

1、三种方式进入Google Keep绘图页面 打开Google Keep后,我们可以通过三种方式进入到绘图页面: 点击底部工具栏的绘图按钮,添加新的绘图笔记 在已有的笔记里,点击右上角的添加绘图,可以添...

yaotingxi ⋅ 2015/11/04 ⋅ 0

iOS矢量绘图样例--vgios_examples

iOS矢量绘图样例 基于 TouchVG for iOS 开源框架的矢量绘图应用样例项目,可快速开发绘图App。 例1:使用StoryBoard绘图 例2:增加Undo/Redo功能 例3:绘图命令按钮栏 例4:绘图菜单和设置菜...

云贵高原 ⋅ 2014/10/14 ⋅ 0

matplotlib绘图库入门

matplotlib 是python最著名的绘图库,它提供了一整套和matlab相似的命令API,十分适合交互式地行制图。而且也可以方便地将它作为绘图控件,嵌入GUI应用程序中。 它的文档相当完备,并且Galle...

ranvane ⋅ 2014/06/24 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

MyBatis四大核心概念

本文讲解 MyBatis 四大核心概念(SqlSessionFactoryBuilder、SqlSessionFactory、SqlSession、Mapper)。 MyBatis 作为互联网数据库映射工具界的“上古神器”,训有四大“神兽”,谓之:Sql...

waylau ⋅ 30分钟前 ⋅ 0

以太坊java开发包web3j简介

web3j(org.web3j)是Java版本的以太坊JSON RPC接口协议封装实现,如果需要将你的Java应用或安卓应用接入以太坊,或者希望用java开发一个钱包应用,那么用web3j就对了。 web3j的功能相当完整...

汇智网教程 ⋅ 43分钟前 ⋅ 0

2个线程交替打印100以内的数字

重点提示: 线程的本质上只是一个壳子,真正的逻辑其实在“竞态条件”中。 举个例子,比如本题中的打印,那么在竞态条件中,我只需要一个方法即可; 假如我的需求是2个线程,一个+1,一个-1,...

Germmy ⋅ 56分钟前 ⋅ 0

Springboot2 之 Spring Data Redis 实现消息队列——发布/订阅模式

一般来说,消息队列有两种场景,一种是发布者订阅者模式,一种是生产者消费者模式,这里利用redis消息“发布/订阅”来简单实现订阅者模式。 实现之前先过过 redis 发布订阅的一些基础概念和操...

Simonton ⋅ 今天 ⋅ 0

error:Could not find gradle

一.更新Android Studio后打开Project,报如下错误: Error: Could not find com.android.tools.build:gradle:2.2.1. Searched in the following locations: file:/D:/software/android/andro......

Yao--靠自己 ⋅ 昨天 ⋅ 0

Spring boot 项目打包及引入本地jar包

Spring Boot 项目打包以及引入本地Jar包 [TOC] 上篇文章提到 Maven 项目添加本地jar包的三种方式 ,本篇文章记录下在实际项目中的应用。 spring boot 打包方式 我们知道,传统应用可以将程序...

Os_yxguang ⋅ 昨天 ⋅ 0

常见数据结构(二)-树(二叉树,红黑树,B树)

本文介绍数据结构中几种常见的树:二分查找树,2-3树,红黑树,B树 写在前面 本文所有图片均截图自coursera上普林斯顿的课程《Algorithms, Part I》中的Slides 相关命题的证明可参考《算法(第...

浮躁的码农 ⋅ 昨天 ⋅ 0

android -------- 混淆打包报错 (warning - InnerClass ...)

最近做Android混淆打包遇到一些问题,Android Sdutio 3.1 版本打包的 错误如下: Android studio warning - InnerClass annotations are missing corresponding EnclosingMember annotation......

切切歆语 ⋅ 昨天 ⋅ 0

eclipse酷炫大法之设置主题、皮肤

eclipse酷炫大法 目前两款不错的eclipse 1.系统设置 Window->Preferences->General->Appearance 2.Eclipse Marketplace下载【推荐】 Help->Eclipse Marketplace->搜索‘theme’进行安装 比如......

anlve ⋅ 昨天 ⋅ 0

vim编辑模式、vim命令模式、vim实践

vim编辑模式 编辑模式用来输入或修改文本内容,编辑模式除了Esc外其他键几乎都是输入 如何进入编辑模式 一般模式输入以下按键,均可进入编辑模式,左下角提示 insert(中文为插入) 字样 i ...

蛋黄Yolks ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部