Помощь - Поиск - Пользователи - Календарь
Полная версия: graphics output
Форум «Всё о Паскале» > Pascal, Object Pascal > Теоретические вопросы
turbo7
I have a program that outputs some graphics to screen using graph.tpu(plot,dots, thise sort of things). I need to print thise output. Is there some way to output graphics to file?
GLuk
Of course есть. А ты англичанин что-ли??  ;)
turbo7
No. I just don't have kyrrilick fonts and prefere good english 2 poor russian.
AlaRic
Вот и весь разговор  8)
JTG
Ну например сделай скрин активного окна (насколько я понимаю, ты все-таки в винде сидишь), потом в пэйнте чуть инвертни цвета и печатай.
GLuk
Я так понял тебе нужно в файл слить инфу с экрана?!
Дык:
1. Выложи исходник.
2. Или хотя бы скажи номер видеорежима...
turbo7
номер видеорежима? Whats that?  :-[

исходник:

uses crt,graph;
var i,j,n,x0,y0,xend,yend,xbeg,ybeg,grd,grm:integer;
temp,sumx,sumxx,sumy,sumyy,sumxy,a,al,bl:real;
x,y: array[1..500] of integer;
begin
clrscr;
grD:= Detect;
InitGraph(grD, grM,' ');
randomize;
n:=200;
sumx:=0;
sumxx:=0;
sumy:=0;
sumyy:=0;
sumxy:=0;
{imitation of sample group}
for i:=1 to n do begin
x[i]:=random(170)+1;
y[i]:=random(150);
end;
for i:=1 to n do begin
sumx:=sumx+x[i];
sumy:=sumy+y[i];
sumxx:=sumxx+x[i]*x[i];
sumyy:=sumyy+y[i]*y[i];
sumxy:=sumxy+x[i]*y[i];
end;
A:=n*sumxx-sqr(sumx);
al:=1/a*(n*sumxy-sumy*sumx);
bl:=1/a*(sumxx*sumy-sumxy*sumx);
outtext('the minimum square method');
y0:=gety+250;
x0:=getx-100;
line(x0,y0,x0+200,y0);
line(x0,y0,x0,y0-200);
outtextxy(x0-15,y0-180,'y');
outtextxy(x0+180, y0+10, 'x');
for i:=1 to n do
putpixel(x[i]+x0,-y[i]+y0, magenta);
xbeg:=x0;
ybeg:=y0-round(bl);
xend:=x0+170; {the biggest value of x that can be}
yend:=y0-round(al*xend+bl);
line(xbeg,ybeg,xend,yend);
readln;
end.
GLuk
Оооо, вот и по-русски научился!  ;)

Для записи сгенеренного тобой растра в файл нужно всего лишь добавить несколько строк (выделены слэшами):

Код

uses crt,graph;
var
  i,j,n,x0,y0,xend,yend,xbeg,ybeg,grd,grm:integer;
  temp,sumx,sumxx,sumy,sumyy,sumxy,a,al,bl:real;
  x,y: array[1..500] of integer;
\\\\\\\\\\\\\\
  P:Pointer;
  Sz:Word;
  F:File;
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
begin
clrscr;
grD:= Detect;
InitGraph(grD, grM,' ');
randomize;
n:=200;
sumx:=0;
sumxx:=0;
sumy:=0;
sumyy:=0;
sumxy:=0;
{imitation of sample group}
for i:=1 to n do begin
x[i]:=random(170)+1;
y[i]:=random(150);
end;
for i:=1 to n do begin
sumx:=sumx+x[i];
sumy:=sumy+y[i];
sumxx:=sumxx+x[i]*x[i];
sumyy:=sumyy+y[i]*y[i];
sumxy:=sumxy+x[i]*y[i];
end;
A:=n*sumxx-sqr(sumx);
al:=1/a*(n*sumxy-sumy*sumx);
bl:=1/a*(sumxx*sumy-sumxy*sumx);
outtext('the minimum square method');
y0:=gety+250;
x0:=getx-100;
line(x0,y0,x0+200,y0);
line(x0,y0,x0,y0-200);
outtextxy(x0-15,y0-180,'y');
outtextxy(x0+180, y0+10, 'x');
for i:=1 to n do
putpixel(x[i]+x0,-y[i]+y0, magenta);
xbeg:=x0;
ybeg:=y0-round(bl);
xend:=x0+170; {the biggest value of x that can be}
yend:=y0-round(al*xend+bl);
line(xbeg,ybeg,xend,yend);
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Sz:=ImageSize(0,0,300,280);
GetMem(P,Sz);
GetImage(0,0,300,280,P^);
Assign(F,'image.dat');
ReWrite(F,1);
BlockWrite(F,P^,Sz);
Close(F);
{-------------------------}
Assign(F,'image.dat');
Reset(F,1);
BlockRead(F,P^,Sz);
SetTextStyle(TriplexFont,HorizDir,4);
OutTextXY(30,300,'Save image to file...press any key');
ReadLn;
ClearDevice;
PutImage(30,20,P^,1);
OutTextXY(30,300,'Image was read from file...');
FreeMem(P,Sz);
readln;
end.
\\\\\\\\\\\\\\



P.S.: А номер видеорежима это и есть номер видеорежима; каждый режим типа характеризуется своим разрешением, глубиной цвета, графический или текстовый и все такое...
turbo7
Цитата
Оооо, вот и по-русски научился!  

Copy pasty works fine. smile.gif

thanx for the advice.

Ok, now I got that image.dat file but  I can't open it with any program. and I need thise image 2 b printed.
Oooh, I feel so dumb...  :'(
GLuk
ДыК, фишка-то в том, что это просто ДАМП экрана...
Завтречка напишу, чтобы сохраняло в формате BMP или PCX.  :)
turbo7
Can I see thise imagr in Dos? Through nc or something?
Булат Шакиров
Нет. Только Вашей программой.
turbo7
hm... So how can I send it to printer?
GLuk
Кинул исходник на мыло...
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.