Вопрос о принтерах

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Вопрос о принтерах

Сообщение alibek » 12.06.2003 (Чт) 16:30

Привет, читатели :)
Вопрос неактуален и мне просто интересно, где собака порылась :)

Вообщем я однажды делал программку, что-то наподобие склада. Помимо всего в ней была функция печати ценников. Такой небольшой листок, на котором указано название, производитель и цена. Причем цена, для большей контрастности, может печатается на черном прямоугольнике белым цветом (в зависимости от выбора пользователя).

Это преамбула. Теперь о вопросе. Чтобы не мучаться, я использовал одну процедуру печати такого ценника для вывода и на принтер и на 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, струйные цветные принтеры. И кроме того, когда я печатал первый раз, все отпечаталось, как положено, белым текстом на черном фоне. А потом перестало, и не знаю, в чем причина.
Lasciate ogni speranza, voi ch'entrate.

Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot, Google-бот и гости: 138

    TopList