Head First C# 中文版 第13章 控件和图形 page605
来源:互联网 发布:围棋直播软件 编辑:程序博客网 时间:2024/06/06 12:34
仔细研究窗体和控件是如何重绘自己的
还记得早些时候我们说使用Graphics对象 就是自己控制图形绘制吧。这就好像告诉.NET“嘿,我知道自己做什么呢。我可以承担额外的责任。”在绘制和重绘的时候,有可能你不想在窗体最小化和最大化的时候重绘...或者你想要更频繁的重绘。一旦你了解了窗体和控件的幕后情景,你就可以自己掌握重绘了:
①每个窗体都有Paint事件
窗体需要重绘自己的时候,就会触发Paint事件。那么是谁负责触发事件呢?是一个叫做OnPaint的方法,该方法是窗体或者用户控件从Control类继承来的。去任意一个窗体中去,覆写OnPaint:
拖动窗体--拖出屏幕,最小化,把它隐藏到其它窗口后面。仔细观察输出。任何时候窗体的一部分被弄花了或者失效了的时候,它就需要被重绘。ClipRectangle定义了窗体需要被重绘的部分。只重绘需要重绘的一部分,可以提高性能。
②需要重绘的时候,调用Invalidate(),并定义重绘的部分
在被遮挡的部分重新出现的时候,.NET触发Paint事件。它调用Invalidate()方法,并传递进去一个Rectangle。这个Rectangle定义了需要重绘哪部分。然后.NET调用OnPaint方法来告诉你的窗体触发一个Paint事件并重绘部分窗体。
③Update()方法给你的Invalidate请求做高的优先级
你或许没有觉察到,窗体每时每刻都在接收消息。几乎所有以On开头的方法都是窗体需应答的消息。Update()方法把
Invalidate消息移动到消息队列中的最上方。
④窗体的Refresh()方法相当于Invalidate()加Update()
有一个捷径,就是Refresh()方法,它首先调用Invalidate()方法来让整个区域失效,然后调用Update()来使得消息移动到队列的顶端。
- Head First C# 中文版 第13章 控件和图形 page605
- Head First C# 中文版 第13章 控件和图形 page563
- Head First C# 中文版 第13章 控件和图形 page564
- Head First C# 中文版 第13章 控件和图形 page565
- Head First C# 中文版 第13章 控件和图形 page566
- Head First C# 中文版 第13章 控件和图形 page567
- Head First C# 中文版 第13章 控件和图形 page568
- Head First C# 中文版 第13章 控件和图形 page569
- Head First C# 中文版 第13章 控件和图形 page570
- Head First C# 中文版 第13章 控件和图形 page571
- Head First C# 中文版 第13章 控件和图形 page572
- Head First C# 中文版 第13章 控件和图形 page573
- Head First C# 中文版 第13章 控件和图形 page574
- Head First C# 中文版 第13章 控件和图形 page575
- Head First C# 中文版 第13章 控件和图形 page576
- Head First C# 中文版 第13章 控件和图形 page577
- Head First C# 中文版 第13章 控件和图形 page578
- Head First C# 中文版 第13章 控件和图形 page579
- s3c2440学习系列3
- (转)关于PATH_TRANSLATED的解释
- .NET 试试
- 多线程编程(1):线程的启动
- 在internal table中把相邻的两行组织成一行
- Head First C# 中文版 第13章 控件和图形 page605
- JBlend上的Java支持情况(摘自Aplix Corporation Web Site)
- Web.config详解 asp.net优化
- mysql-performance-tools from baoz.net
- 泛型实例
- informix Oracle 字符类型比较整理
- Java 基本命令操作详解- 转自Sun网站
- Test
- 使用RichTextEditor请注意