zoukankan      html  css  js  c++  java
  • 取出资源文件中的bitmap,并将其保存到TMemoryStream中,从资源里载入图象而不丢失调色板

    从资源里载入图象而不丢失调色板

    procedure loadgraphic(naam:string);
    var
      { I've moved these in here, so they exist only during the lifetime of the
        procedure. }
      HResInfo: THandle;
      BMF: TBitmapFileHeader;
      MemHandle: THandle;
      Stream: TMemoryStream;
      ResPtr: PByte;
      ResSize: Longint;
      null:array [0..8] of char;
      
    begin
      { In this first part, you are retrieving the bitmap from the resource.
        The bitmap that you retrieve is almost, but not quite, the same as a
        .BMP file (complete with palette information). }

      strpcopy (null, naam);
      HResInfo := FindResource(HInstance, null, RT_Bitmap);
      ResSize := SizeofResource(HInstance, HResInfo);
      MemHandle := LoadResource(HInstance, HResInfo);
      ResPtr := LockResource(MemHandle);

      { Think of a MemoryStream almost as a "File" that exists in memory.
        With a Stream, you can treat either the same way! }

      Stream := TMemoryStream.Create;

      try
        Stream.SetSize(ResSize + SizeOf(BMF));

        { Next, you effectively create a .BMP file in memory by first writing
          the header (missing from the resource, so you add it)... }
        BMF.bfType := $4D42;
        Stream.Write(BMF, SizeOf(BMF));

        { Then the data from the resource. Now the stream contains a .BMP file }
        Stream.Write(ResPtr^, ResSize);

        { So you point to the beginning of the stream... }
        Stream.Seek(0, 0);

        { ...and let Delphi's TBitmap load it in }
        Bitmap:=tbitmap.create;
        Bitmap.LoadFromStream(Stream);

        { At this point, you are done with the stream and the resource. }
      finally
        Stream.Free;
      end;
      FreeResource(MemHandle);
    end;

  • 相关阅读:
    xpath教程-逐层检索和全局检索 转
    xpath教程-通过ID和Class检索 转
    minianaconda3安装
    爬取表情
    进程线程(转)
    centos 安装docker方法2
    关于Dockerfile
    根据指定规则生成游戏选项编码实战
    分布式对象存储 读书笔记
    muduo 的windows下的编译
  • 原文地址:https://www.cnblogs.com/yzryc/p/6373574.html
Copyright © 2011-2022 走看看