GDI + DrawImage () с прозрачным растровым изображением для принтера - PullRequest
5 голосов
/ 15 сентября 2008

Есть ли у кого-нибудь указатели на то, как успешно нарисовать растровое изображение, которое имеет альфа-канал с использованием Graphics :: DrawImage (), когда контекст Graphics создан на основе принтера HDC? Драйверы принтера, как правило, не поддерживают альфа-смешение - так что есть альтернатива рендерингу всего на экранное растровое изображение и простой отправке этого на принтер. Это часто невозможно, особенно для печати в высоком разрешении на широкоформатных принтерах.

Ответы [ 4 ]

1 голос
/ 25 октября 2008

Что это за принтер? Обычные принтеры не печатают белым. Создайте изображение в памяти и сгладьте его (удалите альфа-канал), а затем напечатайте результат.

0 голосов
/ 06 февраля 2012

Спасибо, что задали этот вопрос, потому что я просто думал о том, чтобы, возможно, попытаться использовать GDIplus, чтобы посмотреть, сможет ли он помочь мне решить проблемы, с которыми я все еще сталкиваюсь, получая узорные ромбики для правильной печати. Хотя в настоящее время альфа-смешение действительно работает на большинстве принтеров, есть некоторые, которые рисуют черные углы на бриллиантах.

Помимо альфа-смешивания, я также пытался использовать области обрезки в форме ромба, чтобы окружить форму, но обычно принтеры, которые не поддерживают альфа-смешивание, также не поддерживают полигональные области обрезки. Я попытался скопировать данные из принтера-dc в растровое изображение, чтобы заправить его перед тем, как нарисовать алмаз сверху, надеясь, что это позволит мне вернуть (в углах) то, что было раньше. Это также не работает, потому что кажется, что проблема сводится к тому, что драйвер принтера на самом деле не знает, что печатается на какой части страницы.

В моем случае мой следующий план - попытаться использовать большую растровую кисть для рисования алмазной заливки непосредственно на принтере HDC. Я подозреваю, что есть умеренный шанс, что это также не удастся для определенных принтеров. Похоже, что это не вариант для того, что вы делали.

0 голосов
/ 15 сентября 2008

Суть в том, что мне нужна нарисованная линия графика позади изображения, чтобы быть видимой. Я попытался сначала заполнить прямоугольник цветом RGBA (255, 255, 255, 0), но это не помогает. Пиксели с нулевым альфа-значением печатаются как полностью прозрачные, но частично прозрачные пиксели отображаются полностью непрозрачными.

0 голосов
/ 15 сентября 2008

Вы пытались нарисовать белый прямоугольник для инициализации изображения перед вызовом метода DrawImage?

...