如何在.NET中处理图像以获得像Windows Photo Gallery这样的质量的整页打印?

时间:2009-09-17 18:00:24

标签: image-processing printing printdocument windowsphotogallery

我正在使用.NET PrintDocument类在C#中编写打印路由,处理OnPrintPage事件。

我设法最大化边距并以横向模式打印图像,但它看起来不像我从Windows照片库打印相同的图像文件(以前的Windows图片)和传真查看器),Windows Vista中的默认图像预览程序。

我注意到有一个选项可以选择“锐化图像进行打印”,但这样做有什么作用?

我已经考虑过首先从Windows照片库打印图像副本,然后再次通过打印机发送图纸以打印我需要的自定义覆盖图,但是每次都很难将它排成一行,因为打印机在没有我需要的精确度的情况下吸入纸张...所以我真的需要在C#中完成所有绘图命令,包括图像。

有没有人知道如何对位图执行预处理,以便打印得像Windows照片库一样好?是否有任何简单的打印驱动程序可以截取照片库打印输出为可以由.NET Image类读取的标准图像文件(bmp,png等)?我在这里都是创造力。

2 个答案:

答案 0 :(得分:1)

Paint.Net使用Windows图片和传真查看器进行打印,以前是开源的。

一个快速谷歌的“Paint.Net来源”似乎把它打开了,虽然在他们再次关闭它之前的早期版本。我会查看他们的来源,看看他们如何调用对话框

答案 1 :(得分:0)

如果您正在尝试拍摄小图像并打印大图像,则可能有助于在内存中创建更大版本的图像,然后打印更大的版本。这通常是你如何做到这一点:

Bitmap largeBitmap = new Bitmap(800, 600);
using (Graphics g = Graphics.FromImage(largeBitmap))
{
    g.InterpolationMode = InterpolationMode.HighQualityBicubic;
    g.DrawImage(smallImage ...) // I forget which of the 30 
        // overloads you need here
}
// then print largeBitmap

基本上你会让GDI +调整图像大小而不是打印机;这可能是也可能不是改进。照片库中的“锐化”肯定比这更复杂,并且针对打印问题。