none
打印多个bitmap时很慢 RRS feed

  • 问题

  • 最近在把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的调色板之后,会使打印机的缓存变得如此之大???

    希望各位大虾们能给予帮助,不胜感激!!!
    2010年3月17日 2:26

答案

  • 您好,

    如果是打印的话推荐您使用类似绘图时双缓冲的办法,不要不加处理的给打印机发塞过去,推荐时先都绘制到一个bitmap上然后将这个结果bitmap塞给打印机输出。还有就是.net打印有控件吧,,可能那个效果能好些?(不太清楚不知道是否适合您),,仅此一个建议,请斟酌下。
    2010年3月17日 15:26