设为首页】 【加入收藏】 【网站地图】 【商品折扣
娱乐一生 娱乐明星
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
首页  |  java  |  .NET  |  C/C++  |  网页技术  |  php  |  asp  |  delphi  |  VC  |  VB开发  |  游戏开发  |  软件工程  |  Power Builder  |  Linux开发  |  Windows开发技巧
当前位置:首页 >> C++教程 >> C++ Builder 刷新屏幕

C++ Builder 刷新屏幕 -

第6章 使用图形和多媒体

图形和多媒体元素可为应用程序增添光彩。C++Builder提供了几种为应用程序引入这种功能的方法。要加入图形元素,可以在设计时插入一幅预先绘制好的图片,可在设计时使用图形控件创建它们,也可在运行时动态地画出它们。为添加多媒体功能,C++Builder提供了一些可播放声音与视频剪辑的特殊组件。

6.1 图形编程概述
VCL图形组件封装了Windows图形设备接口(GDI),使得在Windows程序设计中添加图形变得很容易。在C++Builder应用程序中绘制图形,应在对象的画布(canvas)中绘制,而不是直接在对象中绘图。画布是对象的属性,同时它本身也是对象。画布对象的一个主要优点是它能够有效地处理资源并能管理设备场境,所以应用程序可以使用相同的方法在屏幕、打印机、位图或图元文件中绘图。画布只在运行时有效,所以用户必须通过编写代码来使用画布。

注意因为TCanvas是Windows设备场境的一个封装的资源管理器,所以也可在画布中使用所有的WindowsGDI函数。画布的Handle属性是设备场境的处理指针。图形在应用程序中如何显示依赖于拥有所用画布的对象类型。若直接在控件的画布上绘图,则该图会立即显示。若绘制诸如TBitmap画布的非屏幕图象,则该图不会显示,直到将其复制到控件的画布中时才会显示。也就是说,当绘制位图并将其赋给图形控件时,仅当控件有机会处理其O aint消息时才会显示该图。

当处理图形时,通常会遇到绘图(drawing)和画图(painting)两个名词。
· 绘图是编写代码来创建一个单一的、特定的图形元素(如线条或形状)。在程序中,通过调用画布的绘图方法来告诉对象如何在其画布的特定位置上绘出特定的图形。
· 画图是创建对象的整个外观。画图通常会使用到绘图。也就是说,在响应O aint事件时,对象通常要绘出几个图形。例如,一个编辑框通过绘出一个矩形,然后再在内部绘出许多文本来画出自身。而一个形状控件通过绘制单一的图形来画出自身。

在本章开始的示例中展示如何绘出不同的图形,但它们都是在响应O aint事件。下列各节将说明如何在响应其他事件时进行同样的绘图操作。

6.1.1 刷新屏幕
有时,Windows会决定刷新屏幕上的对象外观,为此它生成WM_PAINT消息,这个消息会使VCL对象调用O aint事件。当使用Refresh方法时,VCL会调用已编写的所有对象的O aint事件处理程序。

O aint事件自动生成的缺省名为FormPaint。有时可能需要使用Refresh方法来刷新组件或窗体。例如,可能要在窗体的OnResize事件处理程序中调用Refresh方法以便刷新图形,或在画窗体的背景图时调用它。

虽然有些操作系统会自动刷新窗口中无效的客户区部分,然而Windows不会这样做。在Windows操作系统中绘制在屏幕上的东西都是永久的。当窗体或控件变得模糊不清时,例如拖动窗口,当窗体或控件重新显示时,必须自己重画模糊的区域。有关WM_PAINT消息的详细说明,请参阅Windows的联机帮助。

若使用TImage控件,画图和刷新TImage中的图形由VCL自动处理。在TImage中绘图会创建一个固有的图像。因此不需要自行刷新其包含的图像。与此相反,TPaintBox的画布是直接对应于屏幕设备的,因此任何在PaintBox的画布中绘制的东西都是临时性的。其实大部分的控件都是这样,包括窗体自身也是如此。因此,若在TPaintBox的构造函数中绘图或画图,则需要把相同的程序代码加到O aint事件处理程序中,以便每次客户区无效时能重画其图像。

 



 

娱乐图摘

更多 >>

靓丽清纯美女meimei

美女私房全裸照
导演劝女演员脱衣服(视频)

大胆火辣人体艺术写真(图)

黑丝妹妹热辣诱惑-丝袜美女妹妹

PLMM 漂亮妹妹图集-妹妹图库

全球美女图库-美女集中营

52MM 我爱漂亮妹妹-制服妹妹诱惑

图王图库-世界美女明星图片资料库
美女写真集锦

激情两性-解密性生活
浴室MM湿身内衣诱惑
邻家小妹洗澡被偷拍(视频)

热点文章

更多

· 在C++Builder中使用DLL
· C++ 拖引线示例
· C++ 语言基础(2)
· CRC-16/CRC-32 程序代码
· C++ Builder 可视化组件库(VCL)标准组件 二
· C++的类和类的定义
· C++ Builder 使用Canvas的方法来绘制图形对象
· 高质量C++/C编程指南 -- 第7章 内存管理
· 深度探索C++对象模型(6)
· C++ Builder 在图形中绘制

热点文章

更多