回 帖 发 新 帖 刷新版面

主题:如何将运行pascal 得到的图象例如太极图保存到文本文件

请高手指点,如何把pascal运行得到的图象(例如在Graph window Application 中显示的静态图像)保存下来,存放到文本文件中。动态图像又该如何保存。谢谢!
下边是我运行的太极图,如何修改才能把运行得到的太极图保存到(文本)文件
中。
uses graph,math;
  procedure GraphIni;
    var Gd, Gm: Integer;
  begin
    Gd := Detect;
   InitGraph(Gd, Gm, ' ');
   if GraphResult <> grOk then
     Halt(1);
  end;
  function f(t,r:extended):extended;
    begin
      exit((cos(t-r)-sin(t)) * (r**4-2*r**2*cos(2*t+2.4)+0.9)+(0.62*r)**1000);
    end;

var
   i,j,Gd,Gm:integer;
   t,r:extended;

begin
  graphini;
  setcolor(white);
    for i:=0 to 1000 do
      for j:=0 to 1000 do
        begin
          t:=(2*pi)*i/1000;
          r:=2*j/1000;
          if f(t,r)<0 then
          PutPixel(round(cos(t)*r*100)+300,round(sin(t)*r*100)+200,15)
        end;
  readln;
  CloseGraph;
end.

回复列表 (共10个回复)

沙发

MS是:
在程序开头加上:assign(output,'(文件名).txt');rewrite(output);
在程序末尾加上:close(output);

板凳

静态用文件就可以了,动态貌似不行吧

3 楼

动态应该也行,只是你在FREE的屏幕上看不到输出而已。。。。

4 楼

试了试,好像不行。画出的图象保存不到文件中去。
下边是我运行的一个太极图图象,该怎样修改才能把图像保存下来。
uses graph,math;
  procedure GraphIni;
    var Gd, Gm: Integer;
  begin
    Gd := Detect;
   InitGraph(Gd, Gm, ' ');
   if GraphResult <> grOk then
     Halt(1);
  end;
  function f(t,r:extended):extended;
    begin
      exit((cos(t-r)-sin(t)) * (r**4-2*r**2*cos(2*t+2.4)+0.9)+(0.62*r)**1000);
    end;

var
   i,j,Gd,Gm:integer;
   t,r:extended;

begin
  graphini;
  setcolor(white);
    for i:=0 to 1000 do
      for j:=0 to 1000 do
        begin
          t:=(2*pi)*i/1000;
          r:=2*j/1000;
          if f(t,r)<0 then
          PutPixel(round(cos(t)*r*100)+300,round(sin(t)*r*100)+200,15)
        end;
  readln;
  CloseGraph;
end.

5 楼

哦。太极图是32位图像,保存在。txt里应该不行。
换个,比如‘a.bmp’。

6 楼

谢谢abcwuhang !

换个‘a.bmp’得到的文件是空的。

7 楼

我没看懂你的**是什么意思(FP编译器没过)
如果可以,你参考一下我的[url=http://bbs.pfan.cn/post-286315.html]天津麻将[/url]中的SCRPRINT.PAS
这个仅限16色的屏幕,我不知道再FP下会出现什么情况。

procedure ScreenPrint(path:string);
const
  FileHead:array [1..118] of byte=(
    $42,$4D,$76,$58,$02,$00,$00,$00,$00,$00,$76,$00,$00,$00,$28,$00,
    $00,$00,$80,$02,$00,$00,$E0,$01,$00,$00,$01,$00,$04,$00,$00,$00,
    $00,$00,$00,$58,$02,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,
    $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$80,$00,$00,$80,
    $00,$00,$00,$80,$80,$00,$80,$00,$00,$00,$80,$00,$80,$00,$80,$80,
    $00,$00,$80,$80,$80,$00,$C0,$C0,$C0,$00,$00,$00,$FF,$00,$00,$FF,
    $00,$00,$00,$FF,$FF,$00,$FF,$00,$00,$00,$FF,$00,$FF,$00,$FF,$FF,
    $00,$00,$FF,$FF,$FF,$00);
  colortable:array [0..15] of byte
      =($0,$4,$2,$6,$1,$5,$3,$8,$7,$C,$A,$E,$9,$D,$B,$F);
var
  f:file of byte;
  i,j:word;
  c1,c2:byte;
begin
  setcolor(7);
  assign(f,path);rewrite(f);
  for i:=1 to 118 do write(f,filehead[i]);
  for i:=0 to 479 do begin
    for j:=0 to 639 do begin
      c1:=getpixel(j,getmaxy-i);c1:=colortable[c1];
      c2:=getpixel(j+1,getmaxy-i);c2:=colortable[c2];
      j:=j+1; c1:=c1*16+c2;
      write(f,c1);
    end;
  end;
  close(f);
end;

8 楼

r**4,r的四次方。我按你的方法去试一试。谢谢小田甜!

9 楼

如何输出外部图片?
这个输出外部图片的bmp单元怎么用?
unit bmp;
interface
  uses graph,variable;
  procedure inigraph;
implementation
  procedure inigraph;
    var
      grDriver: Integer;
      grMode: Integer;
      ErrCode: Integer;
  begin
    if nogradeb then exit;
    grDriver := Detect;
{$IFDEF Use8514}                          { check for Use8514 $DEFINE }
    GrDriver := IBM8514;
    GrMode := IBM8514Hi;
{$ELSE}
    GrDriver := Detect;                { use autodetection }
{$ENDIF}
    InitGraph(GrDriver, GrMode, '');
    ErrCode := GraphResult;
    if ErrCode <> grOk then begin
      Writeln('Graphics error:', GraphErrorMsg(ErrCode));
      halt(1);
    end;
  end;
end.
能写一个例子程序在1,1处输出a.bmp吗?
感激不尽!!

10 楼

你可以参考一下:
http://tieba.baidu.com/f?kz=1142928251

我来回复

您尚未登录,请登录后再回复。点此登录或注册