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 ...
随机推荐
- Paper Reading_Database
最近(以及预感接下来的一年)会读很多很多的paper......不如开个帖子记录一下读paper心得 AI+DB A. Pavlo et al., Self-Driving Database Engi ...
- vuex深入
多模块 http://www.php.cn/js-tutorial-385084.html Vuex 模块化+命名空间后, 如何调用其他模块的 state, actions, mutations, ...
- KVC,KVO详解
Key Value Coding Key Value Coding是cocoa的一个标准组成部分,它能让我们可以通过name(key)的方式访问property, 不必调用明确的property ac ...
- Kubernetes 入门-学习-nginx安装-dashboard安装
一.入门 1.Kubernetes中文社区---http://docs.kubernetes.org.cn/ 2.Kubernetes集群组件: - etcd 一个高可用的K/V键值对存储和服务发现系 ...
- Cookie、Session和Django分页
cookie Cookie的由来 大家都知道HTTP协议是无状态的. 无状态的意思是每次请求都是独立的,它的执行情况和结果与前面的请求和之后的请求都无直接关系,它不会受前面的请求响应情况直接影响,也不 ...
- BZOJ 2560: 串珠子 (状压DP+枚举子集补集+容斥)
(Noip提高组及以下),有意者请联系Lydsy2012@163.com,仅限教师及家长用户. 2560: 串珠子 Time Limit: 10 Sec Memory Limit: 128 MB Su ...
- 10年前文章_解决parted 编译出错问题
找到 include/site/i386-linux 文件,修改定义ac_cv_sizeof_off_t 的长度,从原来的4改为8 ac_cv_sizeof_off_t=8 删除 build_dir/ ...
- [每日一学]apache camel|BDD方式开发apache camel|Groovy|Spock
开发apache camel应用,最好的方式就是tdd,因为camel的每个组件都是相互独立并可测试的. 现在有很多好的测试框架,用groovy的Spock框架的BDD(行为测试驱动)是比较优秀和好用 ...
- .NET界面控件DevExpress v19.1.3重磅来袭
DevExpress Universal Subscription(又名DevExpress宇宙版或DXperience Universal Suite)是全球使用广泛的.NET用户界面控件套包,De ...
- spring5
Spring 是面向 Bean 的编程(Bean Oriented Programming, BOP) ,Spring 提供了 IOC 容器通过配置文件或者注解的方式来管理对象之间的依赖关系. 控制反 ...