GDI + DrawImage () с прозрачным растровым изображением для принтера

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
5
0
2 741
4

Ответы 4

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

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

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

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

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

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

Другие вопросы по теме