Как вывести изображение на Printer?
Главная / FAQ / Работа с периферийными устройствами (модем, принтер и др.)
Пример вывода изображения в режиме 640x480 на матричный принтер:
{Из книжки Вальвачева пpо гpафикy с пpимеpами на Паскале.}
{Для контpоля: на Епсонах (LX-100, LQ-100) pаботает ;) }
uses crt,printer,graph;
const
horisontal=0;
vertical=1;
esc=#$1b;
var
d,m:integer;
procedure Printing(turn:integer);
var
n1,n2,i,k,m,j:integer;
begin
sound(1000); delay(100);
sound(500); delay(100); nosound;
setviewport(0,0,639,479,false);
write(lst,esc,'A',#$07);
IF turn=horisontal THEN
begin
n1:=639 and $00FF;
n2:=639 shr 8;
for j:=0 to 479 div 8 do
begin
write(lst,esc,'*',char(1),char(n1),char(n2));
for i:=0 to 639 do
begin
m:=0;
for k:=0 to 7 do
begin
m:=m shl 1;
if getpixel(i,j*8+k)<>0 then inc(m)
end;
write(lst,char(m))
end;
write(lst,#$0d,#$0a)
end
end
ELSE
begin
n1:=479 and $00FF;
n2:=479 shr 8;
j:=0;
repeat
write(lst,esc,'*',char(1),char(n1),char(n2));
for i:=479 downto 0 do
begin
m:=0;
for k:=0 to 7 do
begin
m:=m shl 1;
if getpixel(j+k,i)<>0 then inc(m)
end;
write(lst,char(m))
end;
write(lst,#$0d,#$0a);
inc(j,8)
until j>= 638
end;
write(lst,#$0c);
sound(500); delay(100);
sound(1000); delay(100);
nosound
end;
begin
d:=detect;
initgraph(d,m,'');
circle(639 div 2, 479 div 2,50);
line(200,200,250,270);
outtextxy(260,120,'Printing form the TURBO PASCAL');
printing(horisontal);
repeat until keypressed;
closegraph
end.