不能使用 PaintPicture 方法使用 picturebox的 line、print...等函数画了个图象。 想把这个图象通过printer对象打印出来。 由于该图象比较大,有2M多。 如果用 PaintPicture 方法的话就必须将该图象SavePicture为bmp,然后再让picturebox加载他,才能使PaintPicture 方法,但这样的会非常非常的慢!所以,我不想使用PaintPicture 方法。  有没有其它高效的办法呢?

解决方案 »

  1.   

    使用 Printer 对象
    Printer 对象是一个与设备无关的图片空间,支持用 Print、PSet、Line、PaintPicture 和 Circle 方法来创建文本和图形。只有在窗体或图片框中,才能将这些方法用于 Printer 对象。Printer 对象也包括本章前面所描述的所有字体属性。当完成在 Printer 对象中放置信息后,用 EndDoc 方法将输出传送到打印机。每次应用程序结束时,它们会自动使用 EndDoc 方法,将打印机对象中任何未确定的信息送到打印机。对于各种不同的打印机,Printer 对象提供最好的打印质量,因为 Windows 在 Printer 对象设备无关的图片空间中,将文本和图形与打印机的分辨率和功能进行了最佳的匹配。也可在打印机对象中使用 NewPage 方法来打印多页文档。使用 Printer 对象的主要缺点,是取得最佳结果所需要的代码量较大。在 Printer 对象中打印位图也要花费时间,因此会降低应用程序的性能。 
      

  2.   

    kick  esay(rain)  ~
      

  3.   

    先设picture box的autoredraw为true,然后 
    printer.print picture1.image
      

  4.   

    //不能使用 PaintPicture 方法
        如果用 PaintPicture 方法的话就必须将该图象SavePicture为bmp,然后再让picturebox加载他,才能使PaintPicture 方法,但这样的会非常非常的慢!不知你的结论从何而来picturebox.image
      

  5.   

    是啊,既然您已经在图片框中画好了,为什么不直接用Paintpicture方法打印?为什么要先保存成.bmp文件后在使用Paintpicture方法打印?直接打印不了吗?如果是这样,你可以把AutoRedraw属性设置成True后在用Paintpicture方法直接打印试试!
      

  6.   

    谢谢大家。~最后我还是用了Paintpicture~
    以前我以为只能这样用。Paintpicture picture1.picture,0,0 这样用的话picturebox就必须load 一个图片。~谢谢 rainstormmaster(rainstormmaster) 让我知道了还可以这样 
    Paintpicture picture1.image,0,0    :)~另外,以前觉得Paintpicture picture1.picture,0,0 慢, 是因为我忘了 printer.EndDoc 
    哈哈。!~