1、DrawImage,比起BitBlt实在差的不是一点点,解决的方法就是用BitBlt替换DrawImage。
2、PixelFormat,原来没想到这个也会影响效率,但事实证明确实是这样。
2、PixelFormat,原来没想到这个也会影响效率,但事实证明确实是这样。
Bitmap在new出来的时候是和图片本身的格式有关的,但在最终画到DC上的可不一定是这个格式,具体的格式请查阅MSDN:Image Pixel Format Constants
如果格式不对,DrawImage时会自己做一次图片格式转换,这个也会浪费一定的时间。
一个做法就是Bitmap在new出来后用clone到一个新的Bitmap,这时是可以转换成指定的PixelFormat的:)
统一成一种格式,特别是大图的时候,效果比较明显。
3、尽量用CachedBitmap替代直接的Bitmap使用也能优化一些效率。
4、每次都全部重画是一种浪费,能不重画的就不重画,刷新的区域也是优化的一个有效方式。
5、对象的构造比较费时,比如用于双缓冲的内存Bitmap和Graphics最好设成成员变量,而不是在OnPaint中每次新建
6、减小图片大小 :)