Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Жирность линий на разных принтерах / 2 сообщений из 2, страница 1 из 1
26.08.2004, 16:28:11
    #32667393
Ольга_Т
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Жирность линий на разных принтерах
Рисую на накладных рамочки на On Print:
Код: plaintext
1.
Me.DrawWidth =  25 
  GroupHeader0.Parent.Line (трам-пам-пам)
На лазерных принтерах получается нормально, на струйнике - стандартные линии, предсуществующие в отчете печатаются нормально, а это нарисованное - шириной миллиметра 3.
Если поставить
Код: plaintext
Me.DrawWidth =  7 
, то на струйнике нормально, а на лазном линия волосяная, почти не видна, а нужна жирная рамочка.
То ли я параметры неправильно задаю, то ли надо отпределять, на какой принтер идет вывод, а как это сделать программно, я не знаю...
...
Рейтинг: 0 / 0
26.08.2004, 17:54:31
    #32667653
АлексейЕ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Жирность линий на разных принтерах
Вопрос: Рисyем pамки: Значение свойства DrawWidth

Совет:
Рисую линии в отчете с помощью метода Line. Ширину задаю с помощью свойства отчета DrawWidth.
Так вот. У меня дома, чтобы ширина примерно равнялась 1 "пункту", я задаю значение свойству DrawWidth равную 2, а на работе – аж 8.
Кто-нибудь сможет подсказать, с чем это связано? Какой еще параметр влияет на ширину?
Принтер (драйвер оного) может влиять? Дома HP5L, на работе XEROX.


================

Весьма важный вопрос...
У нас эта проблема проявляется на разных принтерах. Например на HP LaserJet 4 и HP LaserJet 4L.
И чем толще задается линия, тем заметнее разница.
В результате проведенных опытов выяснилось, что виновато разрешение (точек на дюйм). 600 dpi - тонкая, 300 dpi - толще.
Коэффициент можно вычислить так:
Me.ScaleMode = 1
sglKoeff = Me.ScaleWidth
Me.ScaleMode = 3
sglKoeff = sglKoeff / Me.ScaleWidth / Коєффициент по умолчанию

Me.DrawWidth = 16 / sglKoeff

Погрешность все равно есть, но значительно меньше. На мой взгляд связана она с тем, что получается неточное число пикселов на точку, а Me.DrawWidth принимает только целое число пикселов.
Это можно увидеть, выполнив:
Me.ScaleMode = 3
sglKoeff = Me.ScaleWidth
Me.ScaleMode = 2
sglKoeff = sglKoeff / Me.ScaleWidth
У меня для 600 dpi = 8.33333, для 300 dpi = 4.66667.

Еще желательно указывать толщину линии кратной коэффициенту.
Например, если указать 15, то для 600 dpi = 15, для 300 dpi = 8. Линия будет толще.

Вот пример процедуры, рисующей рамки вокруг надписей. Одна с коррекцией, другая - без.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
Private Sub ReportHeader_Print(Cancel As Integer, PrintCount As Integer)
Dim sglKoeff As Single
 'Исходное соотношение twips/pixel при 600 dpi. 
 'Указывается для конкретного принтера, на котором создается отчет. 
Const conDefaultKoeff =  2 . 4 
   Me.ScaleMode =  1 
   sglKoeff = Me.ScaleWidth
   Me.ScaleMode =  3 
   sglKoeff = sglKoeff / Me.ScaleWidth / conDefaultKoeff
   Me.ScaleMode =  1 

MsgBox "KoeffLineWidth " & sglKoeff 
   
   Me.DrawWidth =  16  / sglKoeff 
With Me.Label1
   Me.Line (.Left, .Top)-(.Left + .Width, .Top + .Height), , B
End With

   Me.DrawWidth =  16  
With Me.Label2
   Me.Line (.Left, .Top)-(.Left + .Width, .Top + .Height), , B
End With
End Sub

Анатолий (Киев)
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Жирность линий на разных принтерах / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]