Люди, помогите! Посоветуйте как распечатать график. Есть программа, кот. его строит. Сдавать нужно только принтскрины (без компа). Засунуть график в буфер обмена не получается (я жму на PrintScreen, когда график появляется на экране) изображение в буфер не попадает. Подскажите, плз, как можно это сделать. Заранее спасибо.
Вот тут: http://forum.pascal.net.ru/index.php?showtopic=4533&view=findpost&p=38204 лежит
Volvo, спасибо за ответ. Насколько я в курсе модуль перед использованием надо откомпилировать. Немогли бы Вы подсказать (вкрадце), как это сделать.
Спасибо, дружище! к моей величайшей радости, всё работает!
2 модератор: обсуждение можно закрывать.
всем спасибо.
Скопировал bmp_plus.pas ( 9.05 килобайт ) в BPW (Borland Pascal for Windows 7.0), сохранил как BMP_PLUS.TPU , BMP_PLUS.PAS и BMP_PLUS.BAK в C:\BP\BIN.
Открыл на BP (Borland Pascal).
Скомпилировал этот модуль, добавил end. (Error 10: Unexpected end of file.) , ещё раз скомпилировал
Добавил в своей программе uses BMP_PLUS;
нажимаю Run > отображается график на чёрном экране > нажимаю PrintScreen (принтер подсоединён и включён, в рабочем состоянии), затем enter - не распечатывает!
Print setup
PRNFLTR
$NOSWAP /HP
Change directory> Directory name C:\BP\BIN
Optrions > Units directories C:\BP\UNITS;
Resource directories C:\BP\UNITS;
Операционная система Win XP PRO
Ниже моя программа:
program grafika;
Uses Graph,crt,BMP_PLUS;
const
shag=0.0001;
lgr=-5; {nachalnoye znacheniye x}
pgr=5; {konechnoye znacheniye x}
zcrtX=320; {koordinata x tsentra ekrana}
zcrtY=240; {koordinata y tsentra ekrana}
mtrX=50; {koefitsent mashtabirovaniya po osi x}
mtrY=50; {koefitsent mashtabirovaniya po osi y}
colorG=5; {tsvet grafika}
colorOXY=11; {tsvet koordinatnij osey}
OXYminX=-270; {minimalnoye otobrazhaemoye znacheniye osi x}
OXYmaxX=270; {maximalnoye otobrazhaemoye znacheniye osi x}
OXYminY=-200; {minimalnoye otobrazhaemoye znacheniye osi y}
OXYmaxY=200; {maximalnoye otobrazhaemoye znacheniye osi y}
Var grDriver:integer;
grMode:integer;
ErrCode:integer;
x,y:real;
i:integer;
Begin
grDriver:=Detect;
InitGraph(grDriver, grMode, ' ');
ErrCode:=GraphResult;
if ErrCode<>grOk then begin
writeln('Oshibka: ',GraphErrorMsg(ErrCode));
readln;
halt(100);
end;
setcolor(colorOXY);
line(zcrtX+OXYminX, zcrtY, zcrtX+OXYmaxX, zcrtY); { horz }
moveto(zcrtX+OXYmaxX-7, zcrtY-2);
lineto(zcrtX+OXYmaxX, zcrtY);
lineto(zcrtX+OXYmaxX-7, zcrtY+2);
line(zcrtX, zcrtY-OXYminY, zcrtX, zcrtY-OXYmaxY); { vert }
moveto(zcrtX - 2, zcrtY-OXYmaxY+7);
lineto(zcrtX, zcrtY-OXYmaxY);
lineto(zcrtX + 2, zcrtY-OXYmaxY+7);
settextjustify(centertext, centertext);
outtextxy(zcrtX, zcrtY-OXYmaxY-(textheight('Y') div 2) - 3, 'Y');
outtextxy(zcrtX+OXYmaxX+(textwidth('X') div 2) + 3, zcrtY, 'X');
x:=lgr;
while x<=pgr do
begin
if abs(x)<=5 then begin
y:=exp(-0.5*sqr(x));
putpixel(zcrtX+trunc(x*mtrX),zcrtY-trunc(y*mtrY),colorG)
end;
x:=x+shag;
end;
readkey;
readln;
closegraph;
end.
save_bmp(0, 0, getmaxx, getmaxy, 'screen.bmp', 0);, и у тебя в текущей папке должен (если все верно сделал) появиться файл screen.bmp, содержащий твой график... А вот с ним уже делай что хочешь...
на скрине просто чёрный экран. (нажимаю printscreen только после того, как он полностью отобразится, после 2 раза enter ).
Удалил screen.bmp . повторил снова - тоже самое.
{...}
while x<=pgr do
begin
if abs(x)<=5 then begin
y:=exp(-0.5*sqr(x));
putpixel(zcrtX+trunc(x*mtrX),zcrtY-trunc(y*mtrY),colorG)
end;
x:=x+shag;
end;
save_bmp(0, 0, getmaxx, getmaxy, 'screen.bmp', 0);
readkey;
readln;
closegraph;
end.
Ну, правильно... У тебя же 16-цветный драйвер... Тогда:
save_bmp(0, 0, getmaxx, getmaxy, 'screen.bmp', 1); { <--- 1, а не 0 !!! }
Спасибо . Тему Unit expected можно закрыть.