お知らせ

電子会議

ライブラリ

パレット

Delphi FAQ検索

Delphi FAQ一覧

サンプル蔵





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

"DIBからBitmapに変換"




 ハンドルの形で取得されたDIBをBitmapに読み込ませます。
 Delphi3.1で確認。



    procedure BitmapLoadFromDIB(Bitmap: TBitmap; hDib:THandle);
    var
        Stream: TMemoryStream;
        DIBSize: Longint;
        pDIB: Pointer;
    begin
        Stream := nil;
        PDIB := nil;
        try
            Stream := TMemoryStream.Create;
            DIBSize := GlobalSize(hDIB);
            Stream.Size := Sizeof(TBitmapFileHeader) + DIBSize;
            PBitmapFileHeader(Stream.Memory).bfType := $4D42;
            pDIB := GlobalLock(hDIB);
            if pDIB = nil then
                raise Exception.Create('Could not Get DIB Memory');
            Move(pDIB^, (PChar(STream.Memory) + sizeof(TBitmapFileHeader))^,
                        DIBSize);
            Stream.Position := 0;
            Bitmap.LoadFromStream(Stream);
        finally
            if pDIB <> nil then GlobalUnlock(hDIB);
            GlobalFree(hDIB);
            Stream.Free;
        end;
    end;

                             98/01/30(金) ytm PAF03212@niftyserve.or.jp
                             http://www.geocities.com/SiliconValley/Peaks/8273/

Original document by ytm             氏 ID:(PAF03212)


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

Copyright 1996-2002 Delphi Users' Forum