关于ImageList在DFM里面生成的16进制码怎么转成图片?在设计模式下给ImageList添加图片以后,在DFM里面就会生成如下的16进制码。
请问,不依赖Delphi的IDE环境,怎样将Bitmap的16进制码转成图片?
java,C#实现都可以,请大神帮助!!
100分相送!!  object ImgLst_AppIcon: TImageList
    Left = 288
    Top = 56
    Bitmap = {
      494C010102000400040010001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
      000000000000360000002800000040000000100000000100180000000000000C
      000000000000000000000000000000000000FF0000FF0000FF0000FF0000FF00
      00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
      FFFFC0C0C0C0C0C0C0C0C0C0C0C0C0C0C080C0A0406040006020006040408060
      C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C00000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      000000000000000000000000000000000000C2C2C2FFFFFFFFFFFFFFFFFFFFFF
      FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC2C2C2FF
      0000C0C0C0C0C0C0C0C0C0C0C0C0006040006040006040006040008040006040
      006040006020C0C0C0C0C0C0C0C0C0C0C0C00000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      000000000000000000000000000000000000C2C2C2F2F2F2F2F2F2FF0000FF00
      00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000F2F2F2FFFFFFFF
      0000C0C0C0C0C0C080C0A0006040006040006040006040006040006040006040
      006040006040008040C0C0C0C0C0C0C0C0C00000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      000000000000000000000000000000000000C2C2C2F2F2F2F2F2F2F2F2F2F2F2
      F2F2F2F2F2F2F2FF0000F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2FFFFFFFF
      0000A4A0A0C0C0C0006040006040006040006040006040006040006040006040
      FFFFFF006020006020006040C0C0C0C0C0C00000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      000000000000000000000000000000000000C2C2C2F2F2F2FF0000FF0000F2F2
      F2FF0000FF0000FF0000FF0000FF0000F2F2F2FF0000FF0000F2F2F2FFFFFFFF
      0000C0C0C0006040006040006040006040006040006040006040FFFFFF006040
      006040006020006040006040006040C0C0C00000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      000000000000000000000000000000000000C2C2C2F2F2F2F2F2F2F2F2F2FF00
      00F2F2F2F2F2F2FF0000F2F2F2F2F2F2FF0000FF0000FF0000F2F2F2FFFFFFFF
      0000C0C0C0006020006040006040006040006040006040006040006040006040
      006040FFFFFFFFFFFF006040006040C0C0C00000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      000000000000000000000000000000000000C2C2C2F2F2F2F2F2F2F2F2F2F2F2
      F2FF0000F2F2F2F2F2F2F2F2F2FF0000FF0000F2F2F2F2F2F2F2F2F2FFFFFFFF
      0000006040006040006040006040006040006020006040006040006040006040
      FFFFFFFFFFFF00604000604000604080C0A00000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      000000000000000000000000000000000000C2C2C2F2F2F2FF0000FF0000FF00
      00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000F2F2F2FFFFFFFF
      0000006040006020006040006040FFFFFF006040006040006040FFFFFFFFFFFF
      FFFFFFFFFFFF00604000604000602040A0800000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      000000000000000000000000000000000000C2C2C2F2F2F2F2F2F2F2F2F2F2F2
      F2FF0000FF0000FF0000FF0000FF0000F2F2F2F2F2F2F2F2F2F2F2F2FFFFFFFF
      0000006040006040006040006040FFFFFF006040006040006040FFFFFFFFFFFF
      0060400060400060200060200060200060400000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      000000000000000000000000000000000000C2C2C2F2F2F2F2F2F2F2F2F2F2F2
      F2FF0000F2F2F2F2F2F2F2F2F2FF0000F2F2F2F2F2F2F2F2F2F2F2F2FFFFFFFF
      0000006040006040006040006040FFFFFF006040006040006040FFFFFF006040
      006020006020006020006040006040C0C0C00000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      000000000000000000000000000000000000C2C2C2F2F2F2F2F2F2F2F2F2F2F2
      F2FF0000FF0000FF0000FF0000FF0000F2F2F2F2F2F2F2F2F2F2F2F2FFFFFFFF
      0000C0DCC0006040006040006040FFFFFF006040006040006040006040FFFFFF
      FFFFFF006040006040006040006040C0C0C00000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      000000000000000000000000000000000000C2C2C2F2F2F2F2F2F2FF0000FF00
      00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000F2F2F2FFFFFFFF
      0000C0C0C0006020006040006040FFFFFF006040006040006040006040006040
      006040006040006040006040006020C0C0C00000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      000000000000000000000000000000000000C2C2C2F0FAFDF2F2F2F2F2F2F2F2
      F2FF0000F2F2F2F2F2F2F2F2F2FF0000F2F2F2F2F2F2F2F2F2F2F2F2FFFFFFFF
      0000C0C0C0A4A0A0006040006040FFFFFF006040006040006040006040006040
      006040006040006020006020C0C0C0C0C0C00000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      000000000000000000000000000000000000C2C2C2F2F2F2F0FAFDF2F2F2F2F2
      F2FF0000F2F2F2F2F2F2F2F2F2FF0000F2F2F2F2F2F2F2F2F2F2F2F2FFFFFFFF
      0000C0C0C0C0C0C0408060006020006040006040006040006040006040006040
      006040408060006040C0C0C0C0C0C0C0C0C00000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      000000000000000000000000000000000000C2C2C2F2F2F2F2F2F2F2F2F2F2F2
      F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2FFFFFFFF
      0000C0C0C0C0C0C0C0C0C0A4A0A0006020006040006020006040006040006040
      006040006040C0C0C0C0C0C0C0C0C0C0C0C00000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      000000000000000000000000000000000000FF0000C2C2C2C2C2C2C2C2C2C2C2
      C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2FF
      0000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C080A0A0006040006020006040008040
      C0DCC0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C00000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      000000000000000000000000000000000000424D3E000000000000003E000000
      2800000040000000100000000100010000000000800000000000000000000000
      000000000000000000000000FFFFFF0000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      000000000000}
  end

解决方案 »

  1.   

    自己SF!!
    请lyhoo163大神帮忙!!
      

  2.   

    追加一个,下面这段 Glyph.Data = {}又是怎么转成图片的。。
    请高手指点!!谢谢!!
    分不够再开贴补分!!拜托了!   object BitBtn4: TBitBtn
          Left = 792
          Top = 37
          Width = 33
          Height = 33
          TabOrder = 32
          OnClick = BitBtn4Click
          Glyph.Data = {
            3E070000424D3E07000000000000360000002800000018000000190000000100
            1800000000000807000000000000000000000000000000000000CED6D6CED6D6
            CED6D6CED6D6CED6D6CED6D6CED6D6CED6D6CED6D6CED6D6CED6D6CED6D6CED6
            D6CED6D6CED6D6CED6D6CED6D6CED6D6CED6D6CED6D6CED6D6CED6D6CED6D6CE
            D6D6CED6D6CDD5D5CED6D6CED6D6CED6D6CED6D6CED6D6CED6D6CED6D6CED6D6
            CED6D6CED6D6CED6D6CED6D6CED6D6CED6D6CED6D6CED6D6CED6D6CDD5D5CED6
            D6CED6D6CED6D6CED6D6CDD5D5CED6D6CDD5D5CED6D6CED6D6CDD5D5CED6D6D1
            DADAD1DADAD0D8D8CED6D6CED6D6CED6D6CED6D6CED6D6CED6D6CED6D6CED6D6
            CED6D6C6CECECDD5D5CED6D6CED6D6CED6D6CDD5D5D7DFDFCDD5D5CDD5D5CED6
            D6CED6D6CED6D6CED6D6CED6D6CED6D6CED6D6CED6D6CDD5D5CDD5D5CDD5D5CD
            D5D5CED6D6CED6D6CED6D6CED6D6CED6D6CED6D6CED6D6CED6D6CDD5D5D6DEDE
            CDD5D5CED7D7CED6D6CED6D6CED6D6000000101111101111CED6D6CDD5D5D0D7
            D7CED6D6CED6D6CED6D6D3DBDBD3DCDCD3DCDCD3DCDCD3DCDCD3DCDCCED6D6CE
            D6D6CDD5D5D6DEDECED6D6D2DBDBCED6D6000000101111000000101111101111
            CED6D6CBD3D3CED6D6E0E9E9E0E9E9E0E9E9E0E9E9E0E9E9E0E9E9E0E9E9E0E9
            E9E0E9E9E0E9E9E0E9E9CDD5D5D7DFDFD0D8D8CED6D600000000000003030310
            1111000000CED6D6CED6D6CBD3D3CED6D6E0E9E9000000000000000000000000
            000000111212191A1A060606000000000000CDD5D5DAE2E2CCD4D40000000000
            00000000000000CED6D6CED6D6CED6D6CED6D6CBD3D3CED6D6E0E9E900000000
            0000000000000000242626000000000000000000E0E9E9E0E9E9CED6D6D8E0E0
            000000000000030303000000CED6D6CED6D6CED6D6CED6D6CED6D6CBD3D3CED6
            D6E0E9E9000000000000000000000000000000000000000000E0E9E9CED6D6CE
            D6D6CFD7D7CED6D6000000000000141515CED6D6CED6D6CED6D6CED6D6CED6D6
            CED6D6CED6D6CED6D6E0E9E9000000000000000000000000000000010000E0E9
            E9CBD3D3CED6D6CED6D6DBE2E2000000000000010000CED6D6CED6D6CDD5D5CE
            D6D6CED6D6CED6D6CED6D6CED6D6CED6D6E0E9E9000000000000000000000000
            000000000000010000CED6D6CED6D6CED6D6EBF1F1000000000000010000CED6
            D6CFD7D7CDD5D5CED6D6CED6D6CED6D6CED6D6CED6D6CED6D6E0E9E900000000
            0000000000000000000000000000000000CED6D6CBD3D3CBD3D3EBF1F1000000
            000000CED6D6CED6D6CED6D6CED6D6CED6D6CED6D6CED6D6CED6D6CED6D6CED6
            D6E0E9E9000000000000000000E0E9E9D7DFDF000000000000CED6D6CBD3D3CE
            D6D6EBF1F1000000080808CED6D6CED6D6CED6D6CDD5D5CED6D6CED6D6CED6D6
            CED6D6CED6D6CED6D6E0E9E9000000000000E0E9E9CED6D6CED6D60000000000
            00000000CBD3D3CED6D6EBF1F1000000000000CED6D6CED6D6CED6D6CDD5D5CE
            D6D6CED6D6CED6D6CED6D6CED6D6CED6D6E0E9E9000000E0E9E9CED6D6CED6D6
            CED6D6CBD3D3000000000000CBD3D3CED6D6EBF1F1000000000000080808CED6
            D6D0D8D8CDD5D5D7DFDFCED6D6CED6D6CED6D6CED6D6CED6D6E0E9E9000000E0
            E9E9D2DADACDD5D5CED6D6CBD3D3121212101111CBD3D3CED6D6D9E0E0000000
            010101000000CED6D6CED6D6CDD5D5CED6D6CED6D6CED6D6CED6D6CED6D6CED6
            D6CDD5D5D1D9D9D4DCDCCFD7D7CDD5D5DBE3E3000000000000000000CBD3D3CE
            D6D6CFD7D7CED6D6000000000000161717CED6D6CED6D6CED6D6CED6D6CED6D6
            CED6D6CED6D6CED6D6CDD5D5D4DCDCD3DBDBCFD7D7CED6D6D7DFDF1617170000
            00000000CED6D6CED6D6CDD5D5CED6D6000000000000000000CED6D6CED6D6CE
            D6D6CED6D6CED6D6CED6D6CED6D6CDD5D5CFD7D7D0D8D8CFD7D7D6DEDED7DFDF
            D7DFDF000000000000CBD3D3CED6D6CDD5D5CDD5D5CED6D6CED6D60000000000
            000000002B2C2CCED6D6CED6D6D7E0E0CED6D6CED6D6CDD5D5CED6D6D7E0E0D7
            DFDFD7DFDF0100000B0C0C000000000000CED6D6CED6D6CDD5D5CDD5D5D7DFDF
            CED6D6CED6D6000000000000000000000000000000D7DFDFCED6D6CED6D6CED6
            D6CED6D6D7DFDF0100000100000E0F0F000000000000CED6D6CED6D6CED6D6CD
            D5D5CDD5D5D6DEDECED6D6CED6D6CED6D6000000000000000000000000040404
            0F10100D0E0E0D0E0E0F1010040404010000000000000000010000CED6D6CED6
            D6D7DFDFCED6D6CDD5D5CDD5D5D6DEDECDD5D5CED6D6CED6D6CED6D6CED6D600
            0000000000000000000000000000000000000000000000000000010000CED6D6
            CED6D6CED6D6CDD5D5D6DEDECED6D6CDD5D5CDD5D5D6DEDECDD5D5CDD5D5CDD5
            D5CED6D6D1D9D9CED6D6CED6D6CED6D6CED6D6CED6D6CED6D6CED6D6CED6D6CE
            D6D6CED6D6CED6D6CFD7D7C6CECECCD4D4D6DEDECED6D6CDD5D5CDD5D5D6DEDE
            CDD5D5CED6D6CED6D6CDD5D5CDD5D5CED6D6CFD8D8CFD8D8CFD8D8CFD8D8CFD8
            D8CFD8D8CFD8D8CFD8D8CED6D6CED6D6CED6D6C6CECECCD4D4D6DEDECED6D6CD
            D5D5}
        end
      

  3.   


    大神,您是怎么转成图片的?
    不用Delphi的IDE,用代码实现是怎么做到的呢?
    等待您回复!
      

  4.   


    这个很简单的,你在dehpi中新建一个form,然加添加一个TBitBtn
    用view as text显示你的from
    将你的
    Glyph.Data = {
    到 } 贴到你的TBitBtn1的end前面
    然后直接view as from 就可以看到你的图形了
      

  5.   


    大神,您是怎么转成图片的?
    不用Delphi的IDE,用代码实现是怎么做到的呢?
    等待您回复!

    IDE中可以导出,然后用2进制编辑器比较一下内容就明白如何处理了
      

  6.   


    谢谢。
    这个方法没有问题,用IDE导出的方法很简单。
    我想要做的是,把Glyph.Data = {到 }之间的内容用C#代码转成图片,而不是依赖Delphi的IDE开发环境。
      

  7.   


    谢谢。
    这个方法没有问题,用IDE导出的方法很简单。
    我想要做的是,把Glyph.Data = {到 }之间的内容用C#代码转成图片,而不是依赖Delphi的IDE开发环境。

    你就没有我说的,你在delphi IDE中导出bmp图片文件,然后用类似Hex Editor这样的软件打开图片,和dfm中的内容比较一下,就可以发现内容有多大差别了(不会很大的),然后根据差别的规律编程处理
      

  8.   

    http://baike.baidu.com/link?url=OUdMeK4xvxesJcBrf-hhK05BI6nAreqVpQIUGKc3yASw3_cUM8su2WKMgLI0ARLssd1HOLQC_ZhhheKS5Xr3dt3zjQRGGRUkDYY3wHQECP0OKEv8j7cPvKKiO1waEXl4z0ejN--nGh5ucYMD1d0r_HeFXVjJ8hgEPlqL4TbkB87再结合BMP格式就行了
      

  9.   

    直接读.DFM文本把位图数据转换为二进制再保存为文件,这个最简单,而且不依赖使用的语言,用C、C#、Java等等都可以,但是早期Delphi保存的DFM文件是二进制的,不是文本格式,直接读可能有些问题。
    另外的方法要用Delphi、CB写小工具,建立两个TStream,实际类型可以用TFileStream、TMemoryStream,然后用ObjectBinaryToText获得文本格式的DFM,之后可以自己直接转换,或者用TStream.ReadComponent方法获得一个组件实例,从它的Components[]中查找TImageList类型的组件,TImageList.GetBitmap可以获得里面的图片,TBitmap.SaveToFile保存。
      

  10.   


    Delphi6以后,DFM可以保存成文本格式,所以我才能拿到那些16进制的码。
    现在问题是,我用尽了各种C#中的方法,也不能把那些码转成BMP图片。问题的关键就在这里,用C#或者JAVA,把那些16进制码转成BMP图片。
      

  11.   

    楼主按我8楼说的对比过没有?对比过就会发现大多数都是一样的,你要做的就是:
    1、构造BMP文件头部;
    2、把DFM中相应部分复制过去也就是说:作一个文件操作就行了
      

  12.   


    给个例子,我不知从何下手。

    例子我没有。
    你得自己进行对比,找出规律,比如你给的数据,实际上是一个imagelist中两个bmp(所以你得考虑是生成一个还是多个BMP,delphi中导出可以是一个),你就得搞清楚DFM中哪些是属于文件头(或者自定义的文件头),哪些是BMP真实的数据(位图数据),而这些位图数据其实只要简单的转换成16进制数据追加进BMP文件就行了同时,必须研究清楚BMP文件格式,11楼给了你
      

  13.   

    ,这是Delphi默认自动序列化处理的,如果要用代码转的话,参考TFiler对象,和Delphi基类中的DefineProperties方法中对序列化的处理的写入和读取函数。
      

  14.   

    你的分析很靠谱,根本不是简单的bmp文件格式分析就能解决的问题。谢谢。
      

  15.   

    一年前的帖子了,
     最近分析这个,也看过这个帖子,没找到答案。
    最后自己去比较,发现并不是大神说的那么复杂,
    用二进制编辑器,就会发现,delphi只是在图片的十六进制序列前加了一段自己的识别编码,通常为20~30位,不同格式的图片所加长度不同,jpg,bmp,png都测试过。ico没做测试。  
      

  16.   

    再说一下,我只在image控件上测试,没在其他控件上测试,不知道是否一样
      

  17.   

    看了是我搞错了,这个imagelist还真不一样和image不同编码
      

  18.   


    procedure TForm1.Button1Click(Sender: TObject);
    var
      sTxt:string;
      sList:TStringList;
      iSize:integer;
      buf:PChar;
      ms:TMemoryStream;
    begin
      sList:=TStringList.Create;
      try
        sList.LoadFromFile('c:\2.txt');//2.txt里面的内容就是Glyph.Data = {}
        sTxt:=sList.Text;
      finally
        sList.Free;
      end;  sTxt:=StringReplace(sTxt,#13#10,'',[rfReplaceAll]);
      sTxt:=StringReplace(sTxt,' ','',[rfReplaceAll]);
      iSize:=Pos('424D',sTxt);
      sTxt:=copy(sTxt,iSize,length(sTxt));
      iSize:=length(sTxt) div 2;
      GetMem(buf,iSize);
      try
        HexToBin(PChar(sTxt),buf,iSize);    ms:=TMemoryStream.Create;
        try
          ms.WriteBuffer(buf^,iSize);
          ms.Position:=0;
          ms.SaveToFile('c:\111.bmp');
        finally
          ms.Free;
        end;
      finally
        FreeMem(buf);
      end;
    end;