Graphics对象中可以通过setClip方法来设置裁剪区,对于画到裁剪区以外的部分是不显示的。
我的问题是,假如有一个Image对象,我要将它画到一个Graphics对象上(通过drawImage方法)。那么整个Image都在setClip设置的裁剪区内和只有部分Image在setClip设置的裁剪区之内这两种情况下,系统实际消耗的时间是否一样呢?因为drawImage方法是立即返回的,我不知道怎么来试验测试,希望大家给个思路。
假设部分Image在裁剪区之内时系统消耗的时间要比全部Image在裁剪区之内消耗的系统时间要少的话。对于一个Image对象,如果我先将它的一半设置在裁剪区内,然后drawImage一下,再把另一半设置在裁剪区内drawImage一下。它与一次将Image整个地drawImage,谁消耗的时间少呢?

解决方案 »

  1.   

    1)那么整个Image都在setClip设置的裁剪区内和只有部分Image在setClip设置的裁剪区之内这两种情况下,系统实际消耗的时间是否一样呢?部分刷新效率高,但并不是绝对的。对于复杂界面,部分刷新的效率要高于整体刷新;反之,如果你的界面很简单,全部刷新反而效率高一些2)对于一个Image对象,如果我先将它的一半设置在裁剪区内,然后drawImage一下,再把另一半设置在裁剪区内drawImage一下。它与一次将Image整个地drawImage,谁消耗的时间少呢?这种情况下,当然是一次刷新消耗的时间少。简单地说,“部分刷新”的原理就是哪里脏了擦哪里。然而体现自具体操作上,部分刷新需要在刷新前判断裁剪区的大小,所以,如果刷新的区域一样大,整体刷新的效率就会高于部分刷新。你可以参考一下这篇文章--“AWT和Swing中的绘画”(http://blog.csdn.net/UnAgain/archive/2006/05/13/727474.aspx)