Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Длина и высота символьной строки при печати / 23 сообщений из 23, страница 1 из 1
12.10.2009, 13:42
    #36245594
Макс_П
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Длина и высота символьной строки при печати
Мужики, подскажите, как определить параметры (длину и высоту) символьного выражения при печати в зависимости от типа и размера шрифта.
...
Рейтинг: 0 / 0
12.10.2009, 14:07
    #36245642
Kruchinin Pahan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Длина и высота символьной строки при печати
Макс_П,

MAN: TXTWIDTH(), FONTMETRIC(1), FONTMETRIC(6)
...
Рейтинг: 0 / 0
12.10.2009, 14:19
    #36245668
Макс_П
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Длина и высота символьной строки при печати
Это всё в пикселях и на экране, а мне необходимо в САНТИМЕТРАХ на листе бумаги, чтобы определить влезет или не влезелт в бланк строгой отчётности в определённое место данный текст.
...
Рейтинг: 0 / 0
13.10.2009, 06:00
    #36246936
Kruchinin Pahan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Длина и высота символьной строки при печати
Макс_ПЭто всё в пикселях и на экране, а мне необходимо в САНТИМЕТРАХ на листе бумаги, чтобы определить влезет или не влезелт в бланк строгой отчётности в определённое место данный текст.
Это все в пикселях и без разницы где, на экране или листе бумаги.

Можете попробовать получить разрешение принтера через PRTINFO(8), PRTINFO(11). Надеюсь, дюймы в сантиметры сможете перевести?

Только здесь была какая-то закавыка.
Возможно, лучше действовать через API. Необходимо получить контекст устройства принтера, затем канву принтера, а из канвы принтера через GetDeviceCaps получить сколько пикселей в дюйме.
...
Рейтинг: 0 / 0
13.10.2009, 17:13
    #36248610
Макс_П
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Длина и высота символьной строки при печати
А вот что пишут о пикселях в инете.
Пиксель - это величина переменная, зависит от разрешения экрана.
Разрешение меряют в том числе PPI (pixel per inch) = пексель на дюйм, хотя более привычно обычно 800х600, 1024х768 и т.п.
Экран в 15 дюймов при разрешении 1024х768 имеет примерно 85 пикселей на дюйм, т.е. размер одного пикселя будет 0,3мм. Но при разрешении 800х600 тот же экран будет иметь меньшее число пикселей на дюйм, соответственно размер каждого пикселя увеличится.
Так-как, я вывожу отчёт на бумагу, то меня интересует, чему равен 1 ПИКСЕЛЬ в САНТИМЕТРАХ на листе бумаги вне зависимости от используемого принтера?
...
Рейтинг: 0 / 0
13.10.2009, 17:22
    #36248637
Длина и высота символьной строки при печати
Макс_ПА вот что пишут о пикселях в инете.
Пиксель - это величина переменная, зависит от разрешения экрана.
Разрешение меряют в том числе PPI (pixel per inch) = пексель на дюйм, хотя более привычно обычно 800х600, 1024х768 и т.п.
Экран в 15 дюймов при разрешении 1024х768 имеет примерно 85 пикселей на дюйм, т.е. размер одного пикселя будет 0,3мм. Но при разрешении 800х600 тот же экран будет иметь меньшее число пикселей на дюйм, соответственно размер каждого пикселя увеличится.
Так-как, я вывожу отчёт на бумагу, то меня интересует, чему равен 1 ПИКСЕЛЬ в САНТИМЕТРАХ на листе бумаги вне зависимости от используемого принтера?Ну вот же сами приводите доказательство разного размера пикселя в зависимости от разрешения устройства (экрана монитора) и тут же просите дать размер пикселя "на листе бумаги вне зависимости от используемого принтера". И как Вы себе это представляете? Думаете вывод на бумагу чем-то отличается от вывода на экран? Думаете принтеры не имеют разрешений и их пиксели все одинаковые? Или никогда не видели в техописании принтеров 300dpi, 600dpi, 1200 dpi, 1440 dpi? Что здесь означают dpi? Уж не количество ли пикселей на дюйм? К тому же, один и тот же принтер обычно может печатать с разными разрешениями, выставляемыми в настройках принтера.
...
Рейтинг: 0 / 0
13.10.2009, 18:40
    #36248833
Макс_П
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Длина и высота символьной строки при печати
А если так:
? TXTWIDTH('Hello!','Courier ',24) && Число символов символьного выражения = 5.063
? FONTMETRIC(6,'Courier ',24) && Средняя ширина символа в пикселях = 16
? FONTMETRIC(1,'Courier ',24) && Высота символа в пикселях = 37
По какой формуле вычислить, поместится ли данный текст в прямоугольник на листе бумаги длиной 2 см. и высотой 0.5 см.
...
Рейтинг: 0 / 0
13.10.2009, 19:31
    #36248901
Длина и высота символьной строки при печати
Макс_ПА если так:
? TXTWIDTH('Hello!','Courier ',24) && Число символов символьного выражения = 5.063
? FONTMETRIC(6,'Courier ',24) && Средняя ширина символа в пикселях = 16
? FONTMETRIC(1,'Courier ',24) && Высота символа в пикселях = 37
По какой формуле вычислить, поместится ли данный текст в прямоугольник на листе бумаги длиной 2 см. и высотой 0.5 см.ДЛЯ КАКОГО РАЗРЕШЕНИЯ? Какое разрешение будет на принтере?
...
Рейтинг: 0 / 0
13.10.2009, 19:38
    #36248912
Макс_П
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Длина и высота символьной строки при печати
Программа будет находиться в сети, поэтому использоваться будут разные принтеры.
...
Рейтинг: 0 / 0
13.10.2009, 20:08
    #36248935
Длина и высота символьной строки при печати
Макс_П,
а как текст-то планируешь выводить на принтер? Каким инструментом?
...
Рейтинг: 0 / 0
13.10.2009, 20:19
    #36248947
Макс_П
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Длина и высота символьной строки при печати
проходящий.,
С помощью инструмента Filed.
...
Рейтинг: 0 / 0
13.10.2009, 20:23
    #36248955
Длина и высота символьной строки при печати
Макс_Ппроходящий.,
С помощью инструмента Filed.Что-то я не понял? Напрямую на принтер или используя фоксовый отчет? Или еще как?
...
Рейтинг: 0 / 0
13.10.2009, 20:37
    #36248972
Макс_П
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Длина и высота символьной строки при печати
проходящий.,
Шапка отчёта создана в конструкторе отчёта. Сначала результат появляется в окне предварительного просмотра, а затем, если всё нормально, выбирается принтер и выводится на печать. То есть в предпросмотре, ещё до выбора принтера, должены увидеть, поместится ли информация в выбранном для неё месте.
...
Рейтинг: 0 / 0
13.10.2009, 20:52
    #36248984
Длина и высота символьной строки при печати
Макс_Ппроходящий.,
Шапка отчёта создана в конструкторе отчёта. Сначала результат появляется в окне предварительного просмотра, а затем, если всё нормально, выбирается принтер и выводится на печать. То есть в предпросмотре, ещё до выбора принтера, должены увидеть, поместится ли информация в выбранном для неё месте.Ну наконец-то...
Ну на кой ляд тебе сдался этот расчет размера? Что ты сним собрался делать?
А раз уж пользуешь отчет, то в нем прямо и размести поле нужного тебе размера. В отчете настрой единцы измерения сантиметры и заканчивай заниматься ерундой. Вот как раз на предпростмотре и увидишь степень влезания твоего текста в поле заданного тобой размера.
...
Рейтинг: 0 / 0
13.10.2009, 21:04
    #36248997
Макс_П
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Длина и высота символьной строки при печати
Макс_Ппроходящий.,
Шапка отчёта создана в конструкторе отчёта. Сначала результат появляется в окне предварительного просмотра, а затем, если всё нормально, выбирается принтер и выводится на печать. То есть в предпросмотре, ещё до выбора принтера, должены увидеть, поместится ли информация в выбранном для неё месте.
Откорректирую последнее предложение. ... То есть, если информация не помещается в данное место, я её корректирую программно и вывожу информацию в окно предпросмотра, а затем на принтер.
...
Рейтинг: 0 / 0
14.10.2009, 05:55
    #36249271
Kruchinin Pahan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Длина и высота символьной строки при печати
Макс_ПА вот что пишут о пикселях в инете.
Пиксель - это величина переменная, зависит от разрешения экрана.
Разрешение меряют в том числе PPI (pixel per inch) = пексель на дюйм, хотя более привычно обычно 800х600, 1024х768 и т.п.
Экран в 15 дюймов при разрешении 1024х768 имеет примерно 85 пикселей на дюйм, т.е. размер одного пикселя будет 0,3мм. Но при разрешении 800х600 тот же экран будет иметь меньшее число пикселей на дюйм, соответственно размер каждого пикселя увеличится.
Так-как, я вывожу отчёт на бумагу, то меня интересует, чему равен 1 ПИКСЕЛЬ в САНТИМЕТРАХ на листе бумаги вне зависимости от используемого принтера?
Вы не так читаете. Пиксель - величина постоянная. Пиксель - неделимый атом растеризации. А вот линейный размер пикселя - величина переменная.

Вне контекста устройства не существует понятия линейный размер пикселя. Причем любого устройства, не только принтера.

Более того, один и тот же принтер может растеризировать с различной плотностью. 150 DPI (точек на дюйм), 300 DPI, 600 DPI, 1200 DPI и так далее. Причем, драйвер принтера обычно позволяет пользователю поменять эту настройку в любой момент времени.

По вашей проблеме. Я могу предложить следующее:
1. Используйте моноширинный шрифт, типа Courier New
2. Для моноширинного шрифта вы можете посмотреть в отчете максимальное число СИМВОЛОВ (а не пикселей), которые влазят в строку.
3. Не забудьте дать запас в 1-2 символа. Разные устройства (читай принтеры) при рендеринге текста дают небольшие расхождения (чисто на ошибках округления).
...
Рейтинг: 0 / 0
14.10.2009, 10:22
    #36249569
Макс_П
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Длина и высота символьной строки при печати
Kruchinin Pahan
По вашей проблеме. Я могу предложить следующее:
1. Используйте моноширинный шрифт, типа Courier New
2. Для моноширинного шрифта вы можете посмотреть в отчете максимальное число СИМВОЛОВ (а не пикселей), которые влазят в строку.
3. Не забудьте дать запас в 1-2 символа. Разные устройства (читай принтеры) при рендеринге текста дают небольшие расхождения (чисто на ошибках округления).
Именно так я и поступил, но это не решает проблемы, так как перед тем как узнать сколько же символов поместится, необходимо распечатать документ и затем в ручную считать количество символов. А как же это дело считает ПРЕДВАРИТЕЛЬНЫЙ ПРОСМОТР? Там же и тип и размер шрифта учитываются сразу и на экране видим то, что получится при печати.
...
Рейтинг: 0 / 0
14.10.2009, 11:31
    #36249852
Длина и высота символьной строки при печати
Макс_П[quot Макс_П]То есть, если информация не помещается в данное место, я её корректирую программно и вывожу информацию в окно предпросмотра, а затем на принтер.Опять непонятки. Что значит вывожу в окно предпросмотра? Сам, не пользуясь репортом? Каким образом?
...
Рейтинг: 0 / 0
14.10.2009, 11:34
    #36249863
Длина и высота символьной строки при печати
Макс_ПKruchinin Pahan
По вашей проблеме. Я могу предложить следующее:
1. Используйте моноширинный шрифт, типа Courier New
2. Для моноширинного шрифта вы можете посмотреть в отчете максимальное число СИМВОЛОВ (а не пикселей), которые влазят в строку.
3. Не забудьте дать запас в 1-2 символа. Разные устройства (читай принтеры) при рендеринге текста дают небольшие расхождения (чисто на ошибках округления).
Именно так я и поступил, но это не решает проблемы, так как перед тем как узнать сколько же символов поместится, необходимо распечатать документ и затем в ручную считать количество символов. А как же это дело считает ПРЕДВАРИТЕЛЬНЫЙ ПРОСМОТР? Там же и тип и размер шрифта учитываются сразу и на экране видим то, что получится при печати.Там используется расчет картинки размером в страницу с учетом настроек принтера и показ этой картинки в предпросмотре. Потом эта какртинка выводится на печать. Это если речь идет о предпросмотре отчета. Но по твоим объяснениям выходит, что отчетом ты не пользуешься? Следовательно его фишки не для тебя. Так что же и ка ты делаешь и что хочешь сделать?
...
Рейтинг: 0 / 0
14.10.2009, 12:48
    #36250147
Макс_П
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Длина и высота символьной строки при печати
Хочется вернуться к самому началу:
? TXTWIDTH('Hello!','Courier ',24) && Число символов символьного выражения = 5.063
? FONTMETRIC(6,'Courier ',24) && Средняя ширина символа в пикселях = 16
? FONTMETRIC(1,'Courier ',24) && Высота символа в пикселях = 37
? PRTINFO(11) && Вертикальное разрешение: точек-на-дюйм = 144
? PRTINFO(8) && Горизонтальное разрешение принтера: точек-на-дюйм=120

И всё-таки, кто-нибудь может написать формулу, по которой можно вычислить, поместится ли данный текст в прямоугольник на листе бумаги длиной 2 см. и высотой 0.5 см.?
...
Рейтинг: 0 / 0
14.10.2009, 13:04
    #36250207
Длина и высота символьной строки при печати
Макс_П,
допустим кто-то сподобится написать нужные тебе формулы. Только что по ним можно посчитать в отвязке от принтера? Что ты дальше с ними будешь делать?
...
Рейтинг: 0 / 0
16.10.2009, 13:26
    #36255589
Kruchinin Pahan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Длина и высота символьной строки при печати
Макс_ПХочется вернуться к самому началу:
? TXTWIDTH('Hello!','Courier ',24) && Число символов символьного выражения = 5.063
? FONTMETRIC(6,'Courier ',24) && Средняя ширина символа в пикселях = 16
? FONTMETRIC(1,'Courier ',24) && Высота символа в пикселях = 37
? PRTINFO(11) && Вертикальное разрешение: точек-на-дюйм = 144
? PRTINFO(8) && Горизонтальное разрешение принтера: точек-на-дюйм=120

И всё-таки, кто-нибудь может написать формулу, по которой можно вычислить, поместится ли данный текст в прямоугольник на листе бумаги длиной 2 см. и высотой 0.5 см.?

Тока недостаточно этой хрени.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
CLEAR
*lcString = "12345678901234567890123456789012" &&  32 
lcString = "Съешь еще этих мягких булок"
*lcString	= "A"
lnSize		=  24 
&& Меньше восьми нельзя. Там в настройках шрифта идут дополнительные корректировки, которые все портят.

CalculateFont(lcString, "Courier New", lnSize)
CalculateFont(lcString, "Arial", lnSize)
CalculateFont(lcString, "Times New Roman",lnSize)

FUNCTION CalculateFont
LPARAMETERS tcString, tcFont, tnSize

?TXTWIDTH(tcString, tcFont, tnSize)	&& Число символов в пикселя
?FONTMETRIC( 6 , tcFont, tnSize)		&& Средняя ширина символа в пикселях
?FONTMETRIC( 19 , tcFont, tnSize)		&& Горизонтальный аспект пикселя
&& Размер надписи в миллиметрах
?TXTWIDTH(tcString, tcFont, tnSize) * FONTMETRIC( 6 , tcFont, tnSize) / FONTMETRIC( 19 , tcFont, tnSize) *  25 . 4 
&& Это очень грубо рассчитано. У шрифта - огромная куча характеристик, по которым он рендрится ;-/
&& Более того, разные устройства (принтеры) рендрят по-разному.
ENDFUNC
...
Рейтинг: 0 / 0
16.10.2009, 21:44
    #36256764
Макс_П
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Длина и высота символьной строки при печати
Kruchinin Pahan, огромное спасибо за помощь!!! Благодаря Вашему примеру, нашёл окончательное решение этой задачи здесь
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Длина и высота символьной строки при печати / 23 сообщений из 23, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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