お知らせ

電子会議

ライブラリ

パレット

Delphi FAQ検索

Delphi FAQ一覧

サンプル蔵





FDelphi FAQ
16番会議室「玉石混淆みんなで作るSample蔵」に寄せられたサンプル

"Bitmapの描画について"



みなさん、こんにちは。

会議室#16/00231のTNさんのサンプルをまねて、描画プログラムを作成しているの
ですが、「不正な処理を実行しました」云々のWindowsのエラーメッセージが表示され
てしまいます。
どなたか解決または回避策をご存知の方がおられましたら、ご教授ねがいます。

動作環境がWin98であると「メモリアクセス違反」を発生し、WinNTでは発生しませ
ん。また、通常のビットマップでは発生せず、Win98添付の「エジプト.bmp」「雲.bmp」
だと発生します。

var
  hdl: HBITMAP;
  bmp: TBitmap;
  ifo: PBitmapInfo;
  isz: DWORD;
  img: Pointer;
  gsz: DWORD;
begin
  bmp := TBitmap.Create;
  try
    bmp.LoadFromFile('雲.bmp');
    //
    hdl := bmp.Handle;
    if hdl <> 0 then begin
      GetDIBSizes(hdl, isz, gsz);
      ifo := AllocMem(isz + 1);
      img := AllocMem(gsz + 1);
      try
        GetDIB(hdl, 0, ifo^, img^);
    //  StretchDIBitは省略
      finally
        FreeMem(ifo);
        FreeMem(img);
      end;
    end;
  finally
    bmp.Free
  end
end;

                          2000/07/20(木) 09:25 小倉 隆弘(QZU05132@nifty.com)

 



Original document by 小倉 隆弘   氏 ID:(QZU05132)


ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum の16番会議室「玉石混淆みんなで作るSample蔵」に投稿されたサンプルです。これらのサンプルはボーランド株式会社がサポートする公式のものではありません。また、必ずしも動作が検証されているものではありません。これらのサンプルを使用したことに起因するいかなる損害も投稿者、およびフォーラムスタッフはその責めを負いません。使用者のリスクの範疇でご使用下さい。

Copyright 1996-2002 Delphi Users' Forum