Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Звук, графика и видео > Canvas и вертикальный текст


Автор: pixland 7.3.2010, 11:50
Доброго времени суток! Такая вот проблема, есть код вывода на принтер, теперь поменялись билетики и надо текст выводить вертикально. Как реализовать именно в этом контексте, не могу понять. Буду очень рада если Вы поможете мне

Код

Procedure TF_main.GetPrinterInfo;
begin
  PixelsX:=GetDeviceCaps(printer.Handle,LogPixelsX);
  PixelsY:=GetDeviceCaps(printer.Handle,LogPixelsY);
  MX := GetDeviceCaps(Printer.Handle, PHYSICALOFFSETX);
  MY := GetDeviceCaps(Printer.Handle, PHYSICALOFFSETY);
end;

Function TF_main.PX(x:integer):integer;
begin
 PX:=round(PixelsX/25.4*x);
end;
Function TF_main.PY(Y:integer):integer;
begin
 PY:=round(PixelsY/25.4*Y);
end;



function TF_main.printticket(ser,price,name,date,time,screen,row,place:string):boolean;
var i:integer;
 begin
with printer do
canvas.Font.Name:='Arial';
canvas.Font.Size:=6;
canvas.Font.Style:=[];
canvas.textout(px(1),py(4),ser);
canvas.textout(px(55),py(15),ser);
canvas.Font.Size:=10;
canvas.Font.Style:=[fsBold];
canvas.Font.Color:=CLBlack;
canvas.textout(px(57),py(4),price);
canvas.textout(px(38)-round(printer.canvas.textwidth(name)/2),py(36),name);
canvas.textout(px(19)-round(printer.canvas.textwidth(date)/2),py(44),date);
canvas.textout(px(57)-round(printer.canvas.textwidth(screen)/2),py(44),screen);
canvas.textout(px(19)-round(printer.canvas.textwidth(time)/2),py(50),time);
canvas.textout(px(57)-round(printer.canvas.textwidth(row)/2),py(50),row);
canvas.textout(px(19)-round(printer.canvas.textwidth(price)/2),py(57),price);
canvas.textout(px(57)-round(printer.canvas.textwidth(place)/2),py(57),place);}

end;
end;



Автор: Proxin 7.3.2010, 13:44
что значит "выводить текст вертикально"? весть текст в столбик, или каждое слово в отдельный?

Автор: pixland 7.3.2010, 21:03
Собственно говоря "вертикально" это весь текст выводить с поворотом на 90 градусов. То есть каждую строку текста повернуть на 90. Суть проблемы в картинках.

Было вот так вот

user posted image

Надо чтобы выводилось так

user posted image

Автор: Proxin 7.3.2010, 22:12
http://delphi.about.com/cs/adptips2001/a/bltip1201_4.htm

Автор: weirdo_vista 8.3.2010, 07:49
но там же не через канву? какой-то слишком долгий способ, но все равно спасибо!

Автор: bems 8.3.2010, 07:52
Вот тут http://forum.vingrad.ru/forum/topic-125963/anchor-entry951804/0.html еще пример

Автор: scalosale 8.2.2023, 21:03
Модератор: Сообщение скрыто.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)