Delphi XE2 之 FireMonkey 入门(6) - TLine、TEllipse、TCircle、TPie、TArc、TRectangle、TRoundRect、TCalloutRectangle
它们都是继承自 TShape 类, 共同拥有如下属性:
Fill : TBrush; //填充
Stroke : TBrush; //边线(画笔)
StrokeThickness : Single; //厚度(边线宽度)
StrokeCap : TStrokeCap; //线帽样式, TStrokeCap (枚举)类型
StrokeDash : TStrokeDash; //虚线样式, TStrokeDash(枚举)类型
StrokeJoin : TStrokeJoin; //拐点结合样式, TStrokeJoin(枚举)类型
ShapeRect : TRectF; //可填充范围的矩形(相对于当前图形)
TLine 用不着 Fill, 但增加了 LineType 属性(TLineType 枚举类型);
procedure TForm1.Button1Click(Sender: TObject);
begin
Line1.LineType := TLineType.ltDiagonal; //斜线
Line2.LineType := TLineType.ltTop; //横线
Line3.LineType := TLineType.ltLeft; //竖线
end;
TElipse 和 TCircle 没有新属性, 应该也用不着 StrokeCap、StrokeJoin.
procedure TForm1.Button1Click(Sender: TObject);
begin
Ellipse1.StrokeDash := TStrokeDash.sdDot; //虚线样式
Circle1.Fill.Kind := TBrushKind.bkNone; //取消填充
end;
TArc 和 TPie 增加了 StartAngle、EndAngle 属性.
TRectangle 增加了控制圆角的 XRadius、YRadius 属性、控制边线的 Sides 属性、控制四个角的 Corners、CornerType 属性;
TRoundRect 只加了 Corners 属性; 看来要做更随意的圆角矩形得用 TRectangle 而不是 TRoundRect.
procedure TForm1.Button1Click(Sender: TObject);
begin
Rectangle1.Position.X := ;
Rectangle1.Position.Y := ;
Rectangle1.Width := ;
Rectangle1.Height := ;
Rectangle1.StrokeThickness := ;
Rectangle1.Fill.Color := $80FF0000;
Rectangle1.Stroke.Color := $800000FF; Rectangle1.XRadius := ;
Rectangle1.YRadius := ;
end; procedure TForm1.Button2Click(Sender: TObject);
begin
Rectangle2.Position.X := ;
Rectangle2.Position.Y := ;
Rectangle2.Width := ;
Rectangle2.Height := ;
Rectangle2.StrokeThickness := ;
Rectangle2.Fill.Color := claRed;
Rectangle2.Stroke.Color := claBlack; Rectangle2.CornerType := TCornerType.ctBevel;
Rectangle2.Corners := [TCorner.crBottomLeft, TCorner.crBottomRight];
Rectangle2.Sides := [TSide.sdBottom, TSide.sdRight]; //关于 Corners 和 Sides 还有两个非常方便的常量: AllCorners、AllSides
end;
TCalloutRectangle 很有意思, 矩形外带一个三角, 应该是用于图形化的注释.
给它增加的 CalloutWidth、CalloutLength、CalloutPosition、CalloutOffset 四个属性都是用于控制三角的.
procedure TForm1.Button1Click(Sender: TObject);
begin
CalloutRectangle1.Width := ;
CalloutRectangle1.Height := ;
CalloutRectangle1.CalloutPosition := TCalloutPosition.cpBottom;
CalloutRectangle1.CalloutWidth := CalloutRectangle1.Width / ;
CalloutRectangle1.CalloutLength := CalloutRectangle1.Height / ;
CalloutRectangle1.CalloutOffset := -CalloutRectangle1.Width / ;
end;
这其中需要进一步学习的是 Fill、Stroke 属性, 它们都是 TBrush 类型, 会涉及到 TBitmap、TBitmapObject、TCanvas 等等.
Delphi XE2 之 FireMonkey 入门(6) - TLine、TEllipse、TCircle、TPie、TArc、TRectangle、TRoundRect、TCalloutRectangle的更多相关文章
- Delphi XE2 之 FireMonkey 入门(45Finally) - 结题与问题
Delphi XE2 之 FireMonkey 入门(45Finally) - 结题与问题 很喜欢 FMX 的一些新控件, 如: TExpander.TArcDial.TComboTrackBar.T ...
- Delphi XE2 之 FireMonkey 入门(44) - 控件基础: TTreeView、TTreeViewItem
Delphi XE2 之 FireMonkey 入门(44) - 控件基础: TTreeView.TTreeViewItem TScrollBox -> TCustomTreeView -> ...
- Delphi XE2 之 FireMonkey 入门(43) - 控件基础: TStringGrid、TGrid
Delphi XE2 之 FireMonkey 入门(43) - 控件基础: TStringGrid.TGrid TStringGrid.TGrid 都是从 TCustomGrid 继承; 区别有:1 ...
- Delphi XE2 之 FireMonkey 入门(42) - 控件基础: TComboBox、TComboEdit
Delphi XE2 之 FireMonkey 入门(42) - 控件基础: TComboBox.TComboEdit TListBox 有两个兄弟 TComboListBox.TComboEditL ...
- Delphi XE2 之 FireMonkey 入门(41) - 控件基础: TListBox
Delphi XE2 之 FireMonkey 入门(41) - 控件基础: TListBox TScrollBox -> TCustomListBox -> TListBox; 其元素项 ...
- Delphi XE2 之 FireMonkey 入门(40) - 控件基础: TMemo
Delphi XE2 之 FireMonkey 入门(40) - 控件基础: TMemo 值得注意的变化: 1.其父类 TScrollBox 的许多特性也很有用处, 如: Memo1.UseSma ...
- Delphi XE2 之 FireMonkey 入门(39) - 控件基础: TScrollBox、TVertScrollBox、TFramedScrollBox、TFramedVertScrollBox
Delphi XE2 之 FireMonkey 入门(39) - 控件基础: TScrollBox.TVertScrollBox.TFramedScrollBox.TFramedVertScrollB ...
- Delphi XE2 之 FireMonkey 入门(38) - 控件基础: TPopupMenu、TMenuItem、TMenuBar、TMainMenu
Delphi XE2 之 FireMonkey 入门(38) - 控件基础: TPopupMenu.TMenuItem.TMenuBar.TMainMenu 相关控件: TMenuBar.TPopup ...
- Delphi XE2 之 FireMonkey 入门(37) - 控件基础: TControl 概览
Delphi XE2 之 FireMonkey 入门(37) - 控件基础: TControl 概览 { TControl } public constructor Create(...); ov ...
随机推荐
- vue表单校验(三)
vue表单校验(三) 每当看到heyui的这个表单校验,我就一直想将element的校验也做类似的功能,终于有了方式,虽然不是很完美,但是可以使用,能满足要求了 实现方式 基于element-ui实现 ...
- 剑指offer 删除链表的节点
给定单向链表的头指针和一个节点指针,定义一个函数在O(1)时间内删除该节点. struct ListNode { int val; ListNode *next; }; void DeleteNode ...
- spring.jar是包含有完整发布的单个jar 包,spring.jar中包含除了spring-mock.jar里所包含的内容外其它所有jar包的内容,因为只有在开发环境下才会用到 spring-mock.jar来进行辅助测试,正式应用系统中是用不得这些类的。
Spring jar包的描述:针对3.2.2以上版本 org.springframework spring-aop ——Spring的面向切面编程,提供AOP(面向切面编程)实现 org.spring ...
- C++ md5类,封装好
在网上看到很多md5类,不过封好的很少,我就在网上看到一篇把他写的封装 头文件 #ifndef _MD5_H #define _MD5_H #pragma warning(disable:4786)/ ...
- Java设计模式之——代理设计模式
1.什么是代理设计模式 所谓代理模式是指客户端并不直接调用实际的对象,而是通过调用代理,来间接的调用实际的对象. 这里举一个栗子:就拿我们平时租房子来举例子,好比租客和房主之间的关系,我们租房子往往不 ...
- 基于Kintex Ultrasacle的万兆网络光纤 PCIe加速卡416 光纤PCIe卡
基于Kintex Ultrasacle的万兆网络光纤 PCIe加速卡 一.产品概述 本卡为企业级别板卡,可用于数据中心,安全领域数据采集处理.标准PCI Express全高板,适用于普通服务器.工作站 ...
- Linux架构之Nginx 七层负载均衡
第50章 Nginx七层负载均衡 一.Nginx负载均衡基本概述 1)为什么要使用负载均衡 当我们的Web服务器直接面向用户,往往要承载大量并发请求,单台服务器难以负荷.使用多台Web服务器组成集群, ...
- java 通过反射获取数组
1.创建数组.设置数组元素.访问数组 一维数组: 多维数组: public Class<?> getComponentType() 返回表示数组组件类型的 Class.如果此类不表示数组类 ...
- git详细使用教程
一:Git是什么? Git是目前世界上最先进的分布式版本控制系统. 二:SVN与Git的最主要的区别? SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑,所以 ...
- Linux为程序员添加了行为准则
假如你是开发人员,如果您密切关注Linux开发,您就会知道Linux内核讨论会非常热烈.最近,LinusTorvalds承认Linux内核邮件列表(LKML)和其他Linux开发空间对许多人都是敌对的 ...