![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Не получается печать WMF и EMF файлов на черно-белом принтере [D6, Win2k]
Nikolai_S © (2002-12-12 15:11:00)При попытке печати WMF и EMF файлов на черно-белом принтере возникает следующая проблема: некоторые цвета (например красный и синий) преобразуются в белый цвет, а не в оттенки серого и потому не видны на бумаге. Как распечатать картинку без потерь цвета?
Nikolai_S (2002-12-19 11:07:00) [1]Я попробовал сделать так: нужный метафайл рисую на TBitmap с нужным разрешением и уже TBitmap печатаю. В результате - проблема с цветами решилась, но вот процесс печати естественно заметно замедлился, да и качество тоже хуже стало. Все-таки не сравнить - векторную графику печатать гораздо быстрее и печать более четкая. Жаль, что с прямой печатью метафайлов проблемы.....
Nikolai_S (2002-12-16 16:51:00) [2]Непонятное дело с этими метафайлами. Я пробую печатать этот файл из известной программы ACDSee - эффект один к одному!!! Но выдается еще какая-то ошибка печати. Но все равно рисунок распечатывается и тоже с потрей цветов. Вот только если из MS Word печатает без проблем. Что там этот микрософт наворотил?
Я (2002-12-16 16:25:00) [3]У меня было прикольнее, когда все печатается нормально кроме последних 2-3 сантиметров, а на экране все нормально.
Думал принтер (струйнике HP), но на лазерном тоже самое.
Nikolai_S (2002-12-16 16:04:00) [4]К сожалению, не могу проверить печать на других принтерах, т.к. у меня нет другого принтера (принтер HP Laser Jet 4).
А вот убирать цветность я уже пробовал - эффект тот же самый. Печатается на 100% также, как и цветная картинка. Те цвета, которые были например красными или синими - становяться белыми. Хотя когда вывожу на экран, то все рисуется как надо.
Феу (2002-12-12 16:27:00) [5]Если это конкретно метафайлова заморочка, то не знаю, если проблема принтера/драйверов, то можно руками убрать цветность:
function RgbToGray(RGBColor : TColor) : TColor;
var
Gray : byte;
begin
Gray := Round((0.30 * GetRValue(RGBColor)) +
(0.59 * GetGValue(RGBColor)) +
(0.11 * GetBValue(RGBColor )));
Result := RGB(Gray, Gray, Gray);
end;