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 刷新屏幕
[ 作者:  加入时间:2007-11-02 13:31:55  来自:Linux联盟收集整理 ]
第6章 使用图形和多媒体ubYLinux联盟
ubYLinux联盟
图形和多媒体元素可为应用程序增添光彩。C++Builder提供了几种为应用程序引入这种功能的方法。要加入图形元素,可以在设计时插入一幅预先绘制好的图片,可在设计时使用图形控件创建它们,也可在运行时动态地画出它们。为添加多媒体功能,C++Builder提供了一些可播放声音与视频剪辑的特殊组件。ubYLinux联盟
ubYLinux联盟
6.1 图形编程概述ubYLinux联盟
VCL图形组件封装了Windows图形设备接口(GDI),使得在Windows程序设计中添加图形变得很容易。在C++Builder应用程序中绘制图形,应在对象的画布(canvas)中绘制,而不是直接在对象中绘图。画布是对象的属性,同时它本身也是对象。画布对象的一个主要优点是它能够有效地处理资源并能管理设备场境,所以应用程序可以使用相同的方法在屏幕、打印机、位图或图元文件中绘图。画布只在运行时有效,所以用户必须通过编写代码来使用画布。ubYLinux联盟
ubYLinux联盟
注意因为TCanvas是Windows设备场境的一个封装的资源管理器,所以也可在画布中使用所有的WindowsGDI函数。画布的Handle属性是设备场境的处理指针。图形在应用程序中如何显示依赖于拥有所用画布的对象类型。若直接在控件的画布上绘图,则该图会立即显示。若绘制诸如TBitmap画布的非屏幕图象,则该图不会显示,直到将其复制到控件的画布中时才会显示。也就是说,当绘制位图并将其赋给图形控件时,仅当控件有机会处理其OnPaint消息时才会显示该图。ubYLinux联盟
ubYLinux联盟
当处理图形时,通常会遇到绘图(drawing)和画图(painting)两个名词。ubYLinux联盟
· 绘图是编写代码来创建一个单一的、特定的图形元素(如线条或形状)。在程序中,通过调用画布的绘图方法来告诉对象如何在其画布的特定位置上绘出特定的图形。ubYLinux联盟
· 画图是创建对象的整个外观。画图通常会使用到绘图。也就是说,在响应OnPaint事件时,对象通常要绘出几个图形。例如,一个编辑框通过绘出一个矩形,然后再在内部绘出许多文本来画出自身。而一个形状控件通过绘制单一的图形来画出自身。ubYLinux联盟
ubYLinux联盟
在本章开始的示例中展示如何绘出不同的图形,但它们都是在响应OnPaint事件。下列各节将说明如何在响应其他事件时进行同样的绘图操作。ubYLinux联盟
ubYLinux联盟
6.1.1 刷新屏幕ubYLinux联盟
有时,Windows会决定刷新屏幕上的对象外观,为此它生成WM_PAINT消息,这个消息会使VCL对象调用OnPaint事件。当使用Refresh方法时,VCL会调用已编写的所有对象的OnPaint事件处理程序。ubYLinux联盟
ubYLinux联盟
OnPaint事件自动生成的缺省名为FormPaint。有时可能需要使用Refresh方法来刷新组件或窗体。例如,可能要在窗体的OnResize事件处理程序中调用Refresh方法以便刷新图形,或在画窗体的背景图时调用它。ubYLinux联盟
ubYLinux联盟
虽然有些操作系统会自动刷新窗口中无效的客户区部分,然而Windows不会这样做。在Windows操作系统中绘制在屏幕上的东西都是永久的。当窗体或控件变得模糊不清时,例如拖动窗口,当窗体或控件重新显示时,必须自己重画模糊的区域。有关WM_PAINT消息的详细说明,请参阅Windows的联机帮助。ubYLinux联盟
ubYLinux联盟
若使用TImage控件,画图和刷新TImage中的图形由VCL自动处理。在TImage中绘图会创建一个固有的图像。因此不需要自行刷新其包含的图像。与此相反,TPaintBox的画布是直接对应于屏幕设备的,因此任何在PaintBox的画布中绘制的东西都是临时性的。其实大部分的控件都是这样,包括窗体自身也是如此。因此,若在TPaintBox的构造函数中绘图或画图,则需要把相同的程序代码加到OnPaint事件处理程序中,以便每次客户区无效时能重画其图像。 Linux联盟收集整理 ,转贴请标明原始链接,如有任何疑问欢迎来本站Linux论坛讨论
评论】【加入收藏夹】【 】【打印】【关闭
※ 相关链接
 ·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)
 ·使用 C++ Builder 创建应用程序步骤  (2007-10-23 13:40:25)
 ·开发 C++ Builder 应用程序步骤  (2007-10-23 13:39:19)