PostScriptファイルのメタファイル取り込み


印刷屋  2007-01-13 23:46:04  No: 24477

「EPSの表示」記事をベースにPostScriptファイルからMetaFileのみを取り出そうとしているんですが、上手くいきません。
分かる方教えて頂けますか?

type
  TPSBuffer =packed record
    Magic          : Dword;  // $C6D3D0C5
    PostScriptPos  : Dword;
    PostScriptSize : Dword;
    MetaFilePos    : Dword;  // メタファイルでない場合は0
    MetaFileSize   : Dword;  // メタファイルでない場合は0
    TIFFPos        : Dword;  // TIFFファイルでない場合は0
    TIFFSize       : Dword;  // TIFFファイルでない場合は0
  end;
//
implementation
//PostScriptメタファイルの読み込み
procedure TfrmMain.PostScriptReadClick(Sender: TObject);
var
  PSB:TPSBuffer;
  PSF:TFileStream;
  MS:TMemoryStream;
  BGMetaFile:TMetaFile;
begin
  if OpenDialog.Execute then
  begin
    PSF := TFileStream.Create(OpenDialog.FileName,fmOpenRead);
    ZeroMemory(@PSB,SizeOf(TPSBuffer);
    PSF.ReadBuffer(PSB,SizeOf(TPSBuffer)); //PSF→PSBにバッファ読み出し
    try
    if not((PSB.MetaFilePos = 0) or (PSB.MetaFileSize = 0)) then
    begin
      MS := TMemoryStream.Create;
      PSF.Position := PSB.MetaFilePos;

      MS.CopyFrom(PSF,PSB.MetaFileSize);
      MS.Position := 0;
      BGMetaFile.LoadFromStream(MS);
    end;
    finally
      MS.Free;
      PSF.Free;
    end;

//イメージいっぱいに描画    Image.Canvas.StretchDraw(Rect(0,0,Image.Width,Image.Height),BGMetaFile);
  end;
end;

//
「TOOLバーのフローティングはどうなった?」ってツッコミについては、しばらくクラスの勉強をしてからということでご容赦ください。σ(^_^; )


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加