3

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

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

我注意到那里有一个选择“锐化图像以进行打印”的选项,但它有什么作用?

我考虑过先从 Windows 照片库打印图像的副本,然后再次通过打印机发送纸张以打印我需要的自定义叠加层,但每次都很难让它对齐,因为打印机很糟糕在没有我需要的那种精度的情况下,我真的需要在 C# 中执行所有绘图命令,包括图像。

有谁知道如何对位图进行预处理,使其打印得和 Windows 照片库一样好? 是否有任何简单的打印驱动程序可以将照片库打印输出截获为可由 .NET Image 类读取的标准图像文件(bmp、png 等)?我在这里全力以赴。

4

2 回答 2

1

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

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

于 2009-10-29T09:58:33.210 回答
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+ 调整图像而不是打印机的大小;这可能是也可能不是改进。照片库中的“锐化”肯定比这更复杂,并且针对打印问题。

于 2009-09-17T18:09:38.303 回答