Как я могу обработать изображение в .NET для печати на всю страницу с таким качеством, как в Windows Photo Gallery? - PullRequest
3 голосов
/ 17 сентября 2009

Я пишу маршрут печати в C #, используя класс .NET PrintDocument, обрабатывая событие OnPrintPage.

Мне удалось увеличить поля и распечатать изображение в альбомной ориентации, но это выглядит не так хорошо, как при печати того же файла изображения из фотоальбома Windows (ранее Windows Picture and Fax Viewer), программа для просмотра изображений по умолчанию в Windows Vista.

Я заметил вариант для выбора «Резкость изображения для печати» , но что это делает?

Сначала я подумал о печати копий изображения из фотоальбома Windows, затем второй раз отправлял листы через принтер для печати нужных мне оверлеев, но каждый раз сложно выстроить их в линию, так как принтер засасывает лист без той точности, которая мне нужна ... поэтому мне действительно нужно выполнить ВСЕ команды рисования в C #, включая изображение.

Кто-нибудь знает, как выполнить предварительную обработку растрового изображения, чтобы оно печаталось так же хорошо, как это делает Windows Photo Gallery? Существуют ли какие-либо простые драйверы печати, которые могут перехватывать выходные данные печати Photo Gallery в качестве стандарта файл изображения (bmp, png и т. д.), который может быть прочитан классом .NET Image? Я здесь для творчества.

Ответы [ 2 ]

1 голос
/ 29 октября 2009

Paint.Net использует Windows Picture и Fax Viewer для печати и ранее был открытым исходным кодом.

Быстрый Google для "источника Paint.Net", кажется, включает это, хотя в более ранних воплощениях прежде, чем они закрыли это снова. Я смотрю на их источник и вижу, как они вызывают диалог

0 голосов
/ 17 сентября 2009

Если вы пытаетесь взять небольшое изображение и распечатать его большую версию, это может помочь создать увеличенную версию вашего изображения в памяти, а затем распечатать эту увеличенную версию. Обычно это то, как вы бы это сделали:

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 + изменять размер изображения вместо принтера; это может или не может быть улучшением. «Повышение резкости» в Фотогалерее, безусловно, более изощренно и направлено на проблемы печати. ​​

...