Вопрос неактуален и мне просто интересно, где собака порылась
Вообщем я однажды делал программку, что-то наподобие склада. Помимо всего в ней была функция печати ценников. Такой небольшой листок, на котором указано название, производитель и цена. Причем цена, для большей контрастности, может печатается на черном прямоугольнике белым цветом (в зависимости от выбора пользователя).
Это преамбула. Теперь о вопросе. Чтобы не мучаться, я использовал одну процедуру печати такого ценника для вывода и на принтер и на PictureBox (для предварительного просмотра), устройство вывода было одним из аргументов процедуры.
Алгоритм печати цены примерно таков:
- Код: Выделить всё
Sub PrintItem(Output As Object, ...)
'Output это либо picPreview, либо Printer
If CurrentSetting.PriceInverted Then
Output.Line (X1, Y1)-(X2, Y2), vbBlack, BF
Output.ForeColor = vbWhite
End If
Output.CurrentY = ...
Output.CurrentX = ...
Output.Print PriceText
Output.ForeColor = vbBlack
End Sub
Разумеется, предварительно устройство вывода (PictureBox или Printer) инициализируется, т.е. устанавливается ScaleMode, задается BackColor, ForeColor, устанавливается FontTransparent=True и т.п.
Так вот, в предварительном просмотре все отлично, но на принтере вылезает черный прямоугольник, а внутри него белый прямоугольник. Такое впечатление, как будто FontTransparent=False и печатается белым текстом на белом фоне.
Тогда я стал хитрить и инвертирование сделал так: вначале печатал черным текстом цену, а потом, если указан вывод инвертированным цветом, выставлял Output.DrawMode=Invert, накладывал черный прямоугольник и восстанавливал DrawMode. Результат оказался гораздо интереснее -- на черном фоне был белый контур цифр.
Я бы с чистой совестью, сказал бы, что дело в принтере, который не умеет печатать прозрачным текстом, но у меня получался одинаковый результат на самых разных принтерах, HP LJ 2100, HP LJ 5Si, струйные цветные принтеры. И кроме того, когда я печатал первый раз, все отпечаталось, как положено, белым текстом на черном фоне. А потом перестало, и не знаю, в чем причина.