linux社区爱心援助Linux认证系列教程业界动态站务新闻公司招聘建议留言网址大全LPI专题CISCO专题
设为首页
加入收藏
管理团队
JSP  
JAVA  
PERL  
 您的位置:首页 > 开发语言 > c/c++/c# >
栏目导栏
  php
  JSP
  ASP
  asp.net
  JAVA
  c/c++/c#
  perl
  JavaScript
  Basic
  Delphi
资料搜索
热门文章
·Windows/Linux下配置Eclipse+C
·c语言static与extern的用法
·VC++(Ctime日期函数)应用
·typedef struct和struct的区别
·C/C++对文件操作
·C#发送Email邮件方法总结
·struct的初始化,拷贝及指针成
·C常用算法程序实例-线性代数方
·C语言入门实例 switch使用
·c++二叉树实现源代码
·对初学者的建议:如何学习C语言
·C++ Builder 处理控件中的文本
·常用的BCB & Delphi 函数
·一道C#面试题目引发的思考
·C++ Builder 使用Canvas对象的
最新文章
·使用C/C++扩展Python
·C语言入门实例 switch使用
·在C#里实现DATAGRID的打印预览
·如何使用 Visual C# .NET 创建
·C#发送Email邮件方法总结
·一道C#面试题目引发的思考
·c语言艺术清屏
·c语言static与extern的用法
·大数的阶乘算法
·C#编码好习惯
·构造函数,复制构造函数
·typedef struct和struct的区别
·struct的初始化,拷贝及指针成
·超强的指针学习笔记推荐
·STL中erase方法对链表类容器的
Google
 
C++ Builder 使用Canvas对象的属性
[ 作者:  加入时间:2007-11-02 13:33:10  来自:Linux联盟收集整理 ]

6.1.4 使用Canvas对象的属性wueLinux联盟
使用Canvas对象可以设置用于绘制线条的画笔、用于填充图形的画刷、用于写文本的字体、以及用于显示图像的像素数组等的属性。wueLinux联盟
下列各节说明以下内容:wueLinux联盟
wueLinux联盟
· 使用画笔。wueLinux联盟
· 使用画刷。wueLinux联盟
· 读取和设置像素。wueLinux联盟
wueLinux联盟
1.使用画笔wueLinux联盟
画布的Pen属性控制线条出现的方式,包括用来绘制形状外框的线条。绘制一条直线只不过是更改两个点间的一组像素值。wueLinux联盟
wueLinux联盟
画笔本身有4个可更改的属性:Color、Width、Style和Mode。wueLinux联盟
· Color属性:更改画笔的颜色。wueLinux联盟
· Width属性:更改画笔的宽度。wueLinux联盟
· Style属性:更改画笔的样式。wueLinux联盟
· Mode属性:更改画笔的模式。wueLinux联盟
wueLinux联盟
这些属性的值决定了画笔如何更改线条像素。在缺省时,每个画笔开始时都是黑色,宽度为1个像素、样式为实线,模式为复制,它会覆盖画布上已存在的任何东西。wueLinux联盟
(1)更改画笔的颜色wueLinux联盟
在运行时可将画笔的Color属性改为任何所需的值以改变画笔的颜色。画笔的颜色决定了画笔在绘制线条时的线条颜色,包括用来绘制形状边框的线条以及其他线条和折线。要更改画笔的颜色,可设置画笔的Color属性值。wueLinux联盟
wueLinux联盟
要让用户选择画笔的新颜色,可把颜色网格放到画笔的工具栏中。颜色网格可设置前景和背景的颜色。对无网格的画笔样式,必须考虑用来描绘线与线之间的空隙的背景色。背景色是由画刷的颜色属性而定。wueLinux联盟
因为用户是通过在网格上单击来选择新的颜色,所以下列代码会在响应OnClick事件时更改画笔的颜色:wueLinux联盟
wueLinux联盟
wueLinux联盟
(2)更改画笔的宽度wueLinux联盟
画笔的宽度以像素决定所绘制线条的宽度。当宽度大于1时,不管画笔Style属性值为何,Windows95总是绘制实线。要更改画笔的宽度,设置画笔的Width属性。假定在画笔的工具栏上有一个用于设置画笔宽度的滚动条,并假定需要更新滚动条旁的标签以便给用户提供反馈信息。使用滚动条的位置来决定画笔的宽度,每当位置更改时就更新画笔的宽度。wueLinux联盟
wueLinux联盟
下列代码说明了如何在滚动条的OnChange事件中处理上述任务:wueLinux联盟
wueLinux联盟
wueLinux联盟
(3)更改画笔的样式wueLinux联盟
通过画笔的Style属性可设置实线、虚线、点线等样式。注意Windows95不支持线条宽度超过一个像素时的虚线或点线样式,并会把它们变成实心的,而不管所给定的样式。设置画笔属性是不同控件共享相同事件处理程序的最好示例。检查Sender参数决定到底是哪个控件获得事件。wueLinux联盟
wueLinux联盟
要创建工具栏上6个画笔样式按钮的单击事件处理程序,可按下列步骤:wueLinux联盟
1) 全部选定这6个画笔样式按钮,并在对象观察器中选择Events|OnClick事件,并在Handler列中输入SetPenStyle。C++Builder产生一个空的单击事件句柄SetPenStyle,并将其分配给所有6个按钮的OnClick事件。wueLinux联盟
2) 在单击事件处理程序中根据Sender的值设置画笔的样式,Sender值也就是发送单击事件的控件:wueLinux联盟
wueLinux联盟
wueLinux联盟
通过给画笔样式按钮的Tag属性中加入画笔样式常数,上面的事件处理程序代码能更进一步被简化。简化后的代码为:wueLinux联盟
wueLinux联盟
wueLinux联盟
(4)更改画笔的模式wueLinux联盟
画笔的Mode属性能够指定画笔颜色和画布上颜色组合的方式。如总为黑色,与画布背景相反的颜色或与画笔颜色相反等。细节请参阅TPen的联机帮助。wueLinux联盟
5)取得画笔的位置wueLinux联盟
当前的绘图位置,也就是画笔开始绘制下一条线的位置称为画笔位置。画笔位置存放在画布的PenPos属性中。画笔位置只影响绘制线,对于形状或文本,可指定所有需要的坐标。要设置画笔位置,调用画布的MoveTo方法。例如,以下代码将画笔位置移到画布的左上角:wueLinux联盟
wueLinux联盟
注意使用LineTo方法画线同时会把当前位置移到直线的终点。wueLinux联盟
wueLinux联盟
2.使用画刷wueLinux联盟
画布的Brush属性控制填充区域的方式,包括形状的内部区域。使用画刷填充区域就是以特定的方法更改大量相邻像素。wueLinux联盟
wueLinux联盟
画刷有3个可以控制的属性:wueLinux联盟
· Color属性:更改填充颜色。wueLinux联盟
· Style属性:更改画刷样式。wueLinux联盟
· Bitmap属性:使用位图作为画刷模式。wueLinux联盟
这些属性值决定了画布填充形状或其他区域的方法。缺省时,画刷开始都是白色,实心样式,且没有位图模式。wueLinux联盟
wueLinux联盟
(1)更改画刷的颜色wueLinux联盟
画刷的颜色决定画布填充形状所用的颜色。要更改填充颜色,可设置画刷的Color属性值。画刷颜色用来作为文本和绘制线条时的背景色,所以它通常用于设置背景色。可以像设置画笔颜色一样来设置画刷的颜色,可在画刷工具栏中颜色网格的单击事件中设置:wueLinux联盟
wueLinux联盟
wueLinux联盟
(2)更改画刷样式wueLinux联盟
画刷样式用于决定画布填充形状所使用的图案。它可以指定画刷颜色和画布中现有的颜色的组合方式。预定义样式包括实心颜色、无色以及各种线条和填充图案。要更改画刷样式,可将其Style属性设为下列预定义值之一:bsSolid、bsClear、bsHorizontal、bsVertical、bsFDiagonal、bsBDiagonal、bsCross或bsDiagCross。wueLinux联盟
wueLinux联盟
下例通过共享一组共8个画刷样式按钮的单击事件处理程序来设置画刷的样式。先选定所有8个按钮,在对象观察器中设置OnClick事件,事件处理程序名为SetBrushStyle。以下是处理程序的代码:wueLinux联盟
wueLinux联盟
wueLinux联盟
通过给画刷样式按钮的Tag属性中加入画刷样式常数,上面的事件处理程序代码能进一步被简化为:wueLinux联盟
wueLinux联盟
wueLinux联盟
(3)设置画刷的Bitmap属性wueLinux联盟
画刷的Bitmap属性指定画刷用于填充形状或区域时所用的位图图像。下例从文件中加载位图并将其分配给窗体Form1的Canvas对象的画刷wueLinux联盟
wueLinux联盟
wueLinux联盟
wueLinux联盟
注意画刷不会假定自己拥有通过Bitmap属性分配给它的位图对象的所有权,所以必须在画刷使用期间确保位图对象可用,且必须在使用完后自行释放位图对象。wueLinux联盟
wueLinux联盟
3.读取和设置像素wueLinux联盟
注意到每个画布都有一个有索引的Pixel属性,它代表组成画布中图像每个单独的颜色点。它很少需要被直接访问,它仅能方便地运行某些小操作,如搜索或设置像素点的颜色。注意设置和获取单个像素点比以整个区域运行图形操作要慢上千倍。所以不要使用Pixel数组属wueLinux联盟
性来访问图形像素。若要高速访问图像像素可见TBitmap::ScanLine属性。

Linux联盟收集整理 ,转贴请标明原始链接,如有任何疑问欢迎来本站Linux论坛讨论
评论】【加入收藏夹】【 】【打印】【关闭
※ 相关链接
 ·C++ Builder 画布的通用属性和方法  (2007-11-02 13:32:25)
 ·C++ Builder 刷新屏幕  (2007-11-02 13:31:55)
 ·C++ Builder 在控件中加入图形  (2007-11-02 13:31:11)
 ·C++ Builder 处理控件中的文本  (2007-11-02 13:29:39)
 ·C++ Builder 实现控件的拖动-停靠操作  (2007-11-02 13:28:44)
 ·C++ Builder 实现控件拖放操作  (2007-11-02 13:28:01)
 ·使用 C++ Builder 框架  (2007-10-23 13:49:32)
 ·使用 C++ Builder 对象仓库介绍  (2007-10-23 13:47:24)
 ·C++ Builder 创建分布式应用程序介绍  (2007-10-23 13:44:16)
 ·C++ Builder 创建程序包和DLL方法步骤  (2007-10-23 13:42:17)