Здравствуйте, sCream, Вы писали:
C>Подскажите кто-нибудь... C>Вывожу на печать некоторый текст (TextOut) C>Текст получается некрасивый и сложно читаемый (особенно мелкий). C>Как быть?
Здравствуйте, sCream, Вы писали: C>TTF шрифт — это True Type Font? C>Т.е. векторный, масштабируемы шрифт... C>Я правильно понял? C>Тогда Times New Roman должен подойти?
Здравствуйте, Sinclair, Вы писали:
S>Здравствуйте, akasoft, Вы писали: A>>Лучше MS Sans Serif под Windows ничего нет... S>Ты что? Это же ужас! Для диалогов рулит Тахома однозначно!
Переименовываем ветку в "MS Sans Serif vs Тахома" и переносим в "Философию программирования"
C>>Тогда Times New Roman должен подойти? AD>Да. Хотя мне лично больше нравится Arial.
Хм...
Видно, что шрифт на экране меняется,
но при печати он по-прежнему масштабируется
как картинка.
При вставке текста на канву он преобразовывается
в растровое изображение?
Наверное, дело не в шрифтах...
Скорее всего не правильно вывожу на печать.
Как мне правильно вывести на печать
изображение, а поверх него текст?
И чтобы текст при этом не масштабировался как картинка...
Здравствуйте, sCream, Вы писали:
C>Как мне правильно вывести на печать C> изображение, а поверх него текст?
Всё очень просто, сначала рисуешь на канве принтера картинку, а затем текст. Чтобы фон текста не затирал картинку делаешь
Printer()->Canvas->Brush->Style = bsClear;
... и всё.
C>И чтобы текст при этом не масштабировался как картинка...
Не понял???
Делаю все следующим образом (где-то на форуме подсмотрел):
procedure PrintGraphic(ObjectToPrint: TGraphic; ObjectCanvas: TCanvas);
begin
with Printer do
begin
BeginDoc;
Canvas.CopyRect(Rect(0, 0, 1911, 2807), ObjectCanvas, Rect(0, 0, 273, 401) );
EndDoc;
end;
end;
//кнопка печатиprocedure TForm1.Button3Click(Sender: TObject);
begin
PrintGraphic(Image1.Picture.Graphic, Image1.Canvas);
end;
//выводим текст на канву при активации формыprocedure TForm1.FormActivate(Sender: TObject);
begin
with Image1.Canvas do
begin
Brush.Color:=clWhite;
Image1.canvas.font.name:='Times New Roman';
Image1.canvas.font.style:=[];
Image1.canvas.font.height:=-7;
textout (10,5,'ТЕКСТ');
Image1.canvas.font.height:=-3;
textout (10,20,'текст.');
end;
end;
В итоге, получаем картинку и текст.
Картинка смаштабировалась и текст тоже.
Но текст масштабируется как растровое изображение, т.е. каждый пиксель увеличивается.
Прочитать такой текст практически невозможно. Особенно мелкий.
Здравствуйте, sCream, Вы писали: C>... C>В итоге, получаем картинку и текст. C>Картинка смаштабировалась и текст тоже. C>Но текст масштабируется как растровое изображение, т.е. каждый пиксель увеличивается.
Так я и говорю, тебе надо рисовать текст не на картинке, а на Canvas принтера. Кроме того, не рекомендую задавать свойство Height у шрифта, лучше менять Size.