|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
15.02.2008, 09:25 | #1 |
Пользователь
Регистрация: 15.02.2008
Сообщений: 17
|
Печатаю содержимое формы, шрифты расплываются.
Печатаю содержимое формы, шрифты расплываются, не получаются
на бумаге красивые ровные шрифты как в Ворде. Содержимое формы в основном из Label. У меня такое было в Фотошопе, лет 7 назад, я печатал обложку для диска. Шрифты все из точек. печатаю с помощью PrintDialog form2.print; Даже где искать даже незнаю.
Всё приходит с опытом ...
Последний раз редактировалось Protsv; 15.02.2008 в 09:29. |
15.02.2008, 13:35 | #2 |
*
Старожил
Регистрация: 22.11.2006
Сообщений: 9,201
|
Этим способом трудно добиться качественной распечатки.
Скачайте бесплатную программу WinSnap, делайте снимок нужного участка экрана, уменьшайте, увеличивайте, добавляйте эффекты и т.д. И распечатывайте полученную картинку. |
18.02.2008, 07:00 | #3 |
Пользователь
Регистрация: 15.02.2008
Сообщений: 17
|
Дело вот в чём. Моя прога создана для автоматизированого заполнения довольно сложной формы. Т.е. человек на одной форме выбирает, заполняет, добовляет что-то, другая форма, посредством действий над 1-ой, заполняется. Вот её мне и надо распечатать.
Может решение такой задачи и выглядит идиотским, для меня это лучшее, очень сложные манипуляции с надписями. А самое главное уже всё готово. проблема только с печатью..... Неужели нет никакой процедуры-подготовки преред печатью...... Или там ещё чего.... ?????
Всё приходит с опытом ...
|
18.02.2008, 07:28 | #4 |
Новичок
Джуниор
Регистрация: 18.01.2008
Сообщений: 1,720
|
Дело в том, что на форме разрешение 96 (а то и 72) DPI. Проще всего, пожалуй, переписать обработчик WM_PRINT (WM_PRINTCLIENT) или как он там в дельфи, и в нем "рисовать" форму уже с другим разрешением
|
18.02.2008, 11:14 | #5 |
Пользователь
Регистрация: 15.02.2008
Сообщений: 17
|
Ладно.
Тогда скажите пожалуйста, как перерисовать форму в другом разрешении ????? Я просто не спец, и мало касался сообщений WM_ Знаю тока, что это сообщения которыми общается винда. И всё. Либо скажите где почитать можно. А может на месте Label рисовать текст канвой ? Или разрешение то же не даст нормально выглядеть... я меняю шрифты на форме есть такие, которые выглядят даже в проге хреново. я не говорю уж про печать. Логика говорит, надо либо менять какие-то свойства шрифтов, либо что-то делать с dpi формы нашёл св-ва шрифта Font.PixelsPerInch изначально оно равно 96 меняю на 192 надпись становится маленькая меняю Font.Size - опять всё коряво. причём у меня size=10 я ставлю 20 и применяю PixelsPerInch:=192 надпись становится похожей как с размером 10. ничего не понимаю. св-во формы PixelsPerInch тоже :=192 ставлю Печатаю, ту же форму вот так: мои функции iPosition и jPosition Printer.BeginDoc; Printer.Canvas.Font:= Form2.Label2.Font; Printer.Canvas.TextOut(iPosition(Fo rm2.Label2.Left),jPosition(Form2.La bel2.Top),Form2.Label2.Caption); Printer.EndDoc; ВСЁ нормально, все шрифты идеальные. Но опять Проблема. У меня на форме куча ТLabel и они иногда налягают друг на друга, соответственно стоят свойство Transperent=True, а способом через Tprinter не получается прозрачности, надписи затирают другие.
Всё приходит с опытом ...
Последний раз редактировалось Stilet; 05.03.2008 в 11:52. |
21.02.2008, 20:37 | #6 |
Пользователь
Регистрация: 15.02.2008
Сообщений: 17
|
Как перед печатью перерисовать форму в другом разрешении ???
Печатаю форму. размером на целый лист. Form2.print; т.к. разрешение формы 90 dpi, то напечатанное выглядит очень не красиво. что можно сделать ? я меняю шрифты на форме есть такие, которые выглядят даже в проге хреново. я не говорю уж про печать. Логика говорит, надо либо менять какие-то свойства шрифтов, либо что-то делать с dpi формы ------------------------------------------- нашёл св-ва шрифта Font.PixelsPerInch изначально оно равно 96 меняю на 192 надпись становится маленькая меняю Font.Size - опять всё коряво. причём у меня size=10 я ставлю 20 и применяю PixelsPerInch:=192 надпись становится похожей как с размером 10. ничего не понимаю. св-во формы PixelsPerInch тоже :=192 ставлю
Всё приходит с опытом ...
Последний раз редактировалось Stilet; 05.03.2008 в 11:46. |
23.02.2008, 17:10 | #7 |
Тот ещё
Старожил
Регистрация: 14.11.2007
Сообщений: 2,242
|
Все верно. Вы запихали в ту же единицу длины в двое больше пикселей, вот текст и стал меньше. То, что ваш шрифт выглядит "хреново", говорит о том, что выбран примитивный вид шрифтов (забыл как они называются). Короче, такие шрифты хранятся как набор точек, и если их увеличивать, то красивее они от этого не становятся. Кстати, стандартный шрифт MS Sans Serif к таким и относится. При печати на экран и на бумагу вид отличается по той причине, что разрешение экрана и принтера сильно отличаются. Если на экране нарисовать маленький квадратик, он смотрится вполне нормально, потому что размер экранного пиксела равен габаритам этого квадратика и он выглядит как точка. А при печати на принтер в этом квадратике уместится гораздо больше пикселей. От этого он выглядит как настоящий квадрат с четкими углами, которые так режут глаз.
Дабы избежать этот неприятный факт, нужно использовать шрифты, начертание которых выполняется примитивами (линии, дуги, закрашевание областей). К таким шрифтам относятся Times New Roman, Arial. В списке шрифтов, такие шрифты обозначены специальными иконками. На бумаге они выглядят гораздо красивее чем на экране. Попробуйте, должно получится. Последний раз редактировалось Sibedir; 23.02.2008 в 17:13. |
05.03.2008, 11:24 | #8 |
Пользователь
Регистрация: 15.02.2008
Сообщений: 17
|
Фигня всё это.
Печатаю, ту же форму вот так: мои функции iPosition и jPosition Printer.BeginDoc; Printer.Canvas.Font:= Form2.Label2.Font; Printer.Canvas.TextOut(iPosition(Fo rm2.Label2.Left),jPosition(Form2.La bel2.Top),Form2.Label2.Caption); Printer.EndDoc; ВСЁ нормально, все шрифты идеальные. Но опять Проблема. У меня на форме куча ТLabel и они иногда налягают друг на друга, соответственно стоят свойство Transperent=True, а способом через Tprinter не получается прозрачности, надписи затирают другие.
Всё приходит с опытом ...
|
05.03.2008, 11:49 | #9 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Обязательно печатать форму? Может лучше доверить это дело Report'ам?
И кстати на форуме описывалось много способов печати, поиши может чего и пригодится.
I'm learning to live...
|
05.03.2008, 13:25 | #10 | |
Тот ещё
Старожил
Регистрация: 14.11.2007
Сообщений: 2,242
|
Цитата:
Код:
|
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Шрифты | Михаил Юрьевич | Общие вопросы Delphi | 2 | 01.05.2008 20:34 |
Шрифты | Witaliy | Общие вопросы Delphi | 1 | 27.04.2008 23:31 |
Кривые шрифты!!! | Dimasik | Помощь студентам | 4 | 15.12.2007 18:54 |