最近在把MFC版的代码转成C#的,其中有一个打印的功能,如果在主画面上没有bitmap文件的时候,打印速度和MFC版的差不多。但是一旦上面有很多bitmap的时候,打印速度变得非常慢。主要原因是打印机的缓存变得很大,具体为什么不太清楚。
具体代码如下:
----------------------------------------------------------------
// 从本地文件取得bitmap
Bitmap bitmap = GetBitmap();
ColorPalette cp = bitmap.Palette;// 把前景色设定成透明的红色
cp.Entries[0] = Color.FromArgb(180,255,0,0);// 把背景色设定成完全透明的
cp.Entries[1] = Color.Transparent;// 重新设定bitmap的调色板
bitmap.Palette = cp;// 下边就是剩下的就是往设备上输出了,就不写了。

----------------------------------------------------------------
在以上代码中如果把前景色设定成完全不透明的:
cp.Entries[0] = Color.FromArgb(`255,255,0,0);而背景色不设定,取默认值。这样修改之后再打印速度就和MFC版的差不多了。不知道为什么会这样,关于位图在打印机中的扫描原理不是很清楚。
不知道为啥调整bitmap的调色板之后,会使打印机的缓存变得如此之大???希望各位大虾们能给予帮助,不胜感激!!!