Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.02.2008, 09:25   #1
Protsv
Пользователь
 
Аватар для Protsv
 
Регистрация: 15.02.2008
Сообщений: 17
По умолчанию Печатаю содержимое формы, шрифты расплываются.

Печатаю содержимое формы, шрифты расплываются, не получаются
на бумаге красивые ровные шрифты как в Ворде.
Содержимое формы в основном из Label.

У меня такое было в Фотошопе, лет 7 назад, я печатал обложку для диска. Шрифты все из точек.

печатаю с помощью PrintDialog
form2.print;

Даже где искать даже незнаю.
Всё приходит с опытом ...

Последний раз редактировалось Protsv; 15.02.2008 в 09:29.
Protsv вне форума Ответить с цитированием
Старый 15.02.2008, 13:35   #2
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Этим способом трудно добиться качественной распечатки.
Скачайте бесплатную программу WinSnap, делайте снимок нужного участка экрана, уменьшайте, увеличивайте, добавляйте эффекты и т.д.
И распечатывайте полученную картинку.
mihali4 вне форума Ответить с цитированием
Старый 18.02.2008, 07:00   #3
Protsv
Пользователь
 
Аватар для Protsv
 
Регистрация: 15.02.2008
Сообщений: 17
По умолчанию

Дело вот в чём. Моя прога создана для автоматизированого заполнения довольно сложной формы. Т.е. человек на одной форме выбирает, заполняет, добовляет что-то, другая форма, посредством действий над 1-ой, заполняется. Вот её мне и надо распечатать.

Может решение такой задачи и выглядит идиотским, для меня это лучшее, очень сложные манипуляции с надписями. А самое главное уже всё готово. проблема только с печатью.....

Неужели нет никакой процедуры-подготовки преред печатью......
Или там ещё чего....
?????
Всё приходит с опытом ...
Protsv вне форума Ответить с цитированием
Старый 18.02.2008, 07:28   #4
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Дело в том, что на форме разрешение 96 (а то и 72) DPI. Проще всего, пожалуй, переписать обработчик WM_PRINT (WM_PRINTCLIENT) или как он там в дельфи, и в нем "рисовать" форму уже с другим разрешением
B_N вне форума Ответить с цитированием
Старый 18.02.2008, 11:14   #5
Protsv
Пользователь
 
Аватар для Protsv
 
Регистрация: 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.
Protsv вне форума Ответить с цитированием
Старый 21.02.2008, 20:37   #6
Protsv
Пользователь
 
Аватар для Protsv
 
Регистрация: 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.
Protsv вне форума Ответить с цитированием
Старый 23.02.2008, 17:10   #7
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

Все верно. Вы запихали в ту же единицу длины в двое больше пикселей, вот текст и стал меньше. То, что ваш шрифт выглядит "хреново", говорит о том, что выбран примитивный вид шрифтов (забыл как они называются). Короче, такие шрифты хранятся как набор точек, и если их увеличивать, то красивее они от этого не становятся. Кстати, стандартный шрифт MS Sans Serif к таким и относится. При печати на экран и на бумагу вид отличается по той причине, что разрешение экрана и принтера сильно отличаются. Если на экране нарисовать маленький квадратик, он смотрится вполне нормально, потому что размер экранного пиксела равен габаритам этого квадратика и он выглядит как точка. А при печати на принтер в этом квадратике уместится гораздо больше пикселей. От этого он выглядит как настоящий квадрат с четкими углами, которые так режут глаз.
Дабы избежать этот неприятный факт, нужно использовать шрифты, начертание которых выполняется примитивами (линии, дуги, закрашевание областей). К таким шрифтам относятся Times New Roman, Arial. В списке шрифтов, такие шрифты обозначены специальными иконками. На бумаге они выглядят гораздо красивее чем на экране.
Попробуйте, должно получится.

Последний раз редактировалось Sibedir; 23.02.2008 в 17:13.
Sibedir вне форума Ответить с цитированием
Старый 05.03.2008, 11:24   #8
Protsv
Пользователь
 
Аватар для Protsv
 
Регистрация: 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 не получается прозрачности,
надписи затирают другие.
Всё приходит с опытом ...
Protsv вне форума Ответить с цитированием
Старый 05.03.2008, 11:49   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Обязательно печатать форму? Может лучше доверить это дело Report'ам?
И кстати на форуме описывалось много способов печати, поиши может чего и пригодится.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 05.03.2008, 13:25   #10
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

Цитата:
Фигня всё это.
Печатаю, ту же форму вот так:

мои функции iPosition и jPosition

Printer.BeginDoc;
Printer.Canvas.Font:= Form2.Label2.Font;
Printer.Canvas.TextOut(iPosition(Fo rm2.Label2.Left ),jPosition(Form2.Label2.Top),Form2 .Label2.Caption );
Printer.EndDoc;
И при чем здесь печать формы. Это самое обыкновенное рисование на канве. Вы вообще-то в начале речь вели про form2.print. Ну уж коли сами на канве рисуете, то попробуйте это:
Код:
Canvas.Brush.Style := bsClear;
Sibedir вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Шрифты Михаил Юрьевич Общие вопросы Delphi 2 01.05.2008 20:34
Шрифты Witaliy Общие вопросы Delphi 1 27.04.2008 23:31
Кривые шрифты!!! Dimasik Помощь студентам 4 15.12.2007 18:54