關于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
uj5u.com熱心網友回復:
自己SF!!請lyhoo163大神幫忙!!
uj5u.com熱心網友回復:
追加一個,下面這段 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
uj5u.com熱心網友回復:
貼子僅在手機上顯示,電腦上沒有。uj5u.com熱心網友回復:
看到了,檔案已發給你!uj5u.com熱心網友回復:
大哥您太厲害了,能告訴我是怎么轉出來的嗎?請您指教!!uj5u.com熱心網友回復:
大神,您是怎么轉成圖片的?
不用Delphi的IDE,用代碼實作是怎么做到的呢?
等待您回復!
uj5u.com熱心網友回復:

這個很簡單的,你在dehpi中新建一個form,然加添加一個TBitBtn
用view as text顯示你的from
將你的
Glyph.Data = {
到 } 貼到你的TBitBtn1的end前面
然后直接view as from 就可以看到你的圖形了
uj5u.com熱心網友回復:
IDE中可以匯出,然后用2進制編輯器比較一下內容就明白如何處理了
uj5u.com熱心網友回復:
這個很簡單的,你在dehpi中新建一個form,然加添加一個TBitBtn
用view as text顯示你的from
將你的
Glyph.Data = {
到 } 貼到你的TBitBtn1的end前面
然后直接view as from 就可以看到你的圖形了
謝謝。
這個方法沒有問題,用IDE匯出的方法很簡單。
我想要做的是,把Glyph.Data = {到 }之間的內容用C#代碼轉成圖片,而不是依賴Delphi的IDE開發環境。
uj5u.com熱心網友回復:
這個很簡單的,你在dehpi中新建一個form,然加添加一個TBitBtn
用view as text顯示你的from
將你的
Glyph.Data = {
到 } 貼到你的TBitBtn1的end前面
然后直接view as from 就可以看到你的圖形了
謝謝。
這個方法沒有問題,用IDE匯出的方法很簡單。
我想要做的是,把Glyph.Data = {到 }之間的內容用C#代碼轉成圖片,而不是依賴Delphi的IDE開發環境。
你就沒有我說的,你在delphi IDE中匯出bmp圖片檔案,然后用類似Hex Editor這樣的軟體打開圖片,和dfm中的內容比較一下,就可以發現內容有多大差別了(不會很大的),然后根據差別的規律編程處理
uj5u.com熱心網友回復:
http://baike.baidu.com/link?url=OUdMeK4xvxesJcBrf-hhK05BI6nAreqVpQIUGKc3yASw3_cUM8su2WKMgLI0ARLssd1HOLQC_ZhhheKS5Xr3dt3zjQRGGRUkDYY3wHQECP0OKEv8j7cPvKKiO1waEXl4z0ejN--nGh5ucYMD1d0r_HeFXVjJ8hgEPlqL4TbkB87再結合BMP格式就行了
uj5u.com熱心網友回復:
直接讀.DFM文本把位圖資料轉換為二進制再保存為檔案,這個最簡單,而且不依賴使用的語言,用C、C#、Java等等都可以,但是早期Delphi保存的DFM檔案是二進制的,不是文本格式,直接讀可能有些問題。另外的方法要用Delphi、CB寫小工具,建立兩個TStream,實際型別可以用TFileStream、TMemoryStream,然后用ObjectBinaryToText獲得文本格式的DFM,之后可以自己直接轉換,或者用TStream.ReadComponent方法獲得一個組件實體,從它的Components[]中查找TImageList型別的組件,TImageList.GetBitmap可以獲得里面的圖片,TBitmap.SaveToFile保存。
uj5u.com熱心網友回復:
直接讀.DFM文本把位圖資料轉換為二進制再保存為檔案,這個最簡單,而且不依賴使用的語言,用C、C#、Java等等都可以,但是早期Delphi保存的DFM檔案是二進制的,不是文本格式,直接讀可能有些問題。
另外的方法要用Delphi、CB寫小工具,建立兩個TStream,實際型別可以用TFileStream、TMemoryStream,然后用ObjectBinaryToText獲得文本格式的DFM,之后可以自己直接轉換,或者用TStream.ReadComponent方法獲得一個組件實體,從它的Components[]中查找TImageList型別的組件,TImageList.GetBitmap可以獲得里面的圖片,TBitmap.SaveToFile保存。
Delphi6以后,DFM可以保存成文本格式,所以我才能拿到那些16進制的碼。
現在問題是,我用盡了各種C#中的方法,也不能把那些碼轉成BMP圖片。
問題的關鍵就在這里,用C#或者JAVA,把那些16進制碼轉成BMP圖片。
uj5u.com熱心網友回復:
樓主按我8樓說的對比過沒有?對比過就會發現大多數都是一樣的,你要做的就是:1、構造BMP檔案頭部;
2、把DFM中相應部分復制過去
也就是說:作一個檔案操作就行了
uj5u.com熱心網友回復:
樓主按我8樓說的對比過沒有?對比過就會發現大多數都是一樣的,你要做的就是:
1、構造BMP檔案頭部;
2、把DFM中相應部分復制過去
也就是說:作一個檔案操作就行了
給個例子,我不知從何下手。
uj5u.com熱心網友回復:
樓主按我8樓說的對比過沒有?對比過就會發現大多數都是一樣的,你要做的就是:
1、構造BMP檔案頭部;
2、把DFM中相應部分復制過去
也就是說:作一個檔案操作就行了
給個例子,我不知從何下手。
例子我沒有。
你得自己進行對比,找出規律,比如你給的資料,實際上是一個imagelist中兩個bmp(所以你得考慮是生成一個還是多個BMP,delphi中匯出可以是一個),你就得搞清楚DFM中哪些是屬于檔案頭(或者自定義的檔案頭),哪些是BMP真實的資料(位圖資料),而這些位圖資料其實只要簡單的轉換成16進制資料追加進BMP檔案就行了
同時,必須研究清楚BMP檔案格式,11樓給了你
uj5u.com熱心網友回復:
頂起!
uj5u.com熱心網友回復:
,這是Delphi默認自動序列化處理的,如果要用代碼轉的話,參考TFiler物件,和Delphi基類中的DefineProperties方法中對序列化的處理的寫入和讀取函式。
uj5u.com熱心網友回復:
,這是Delphi默認自動序列化處理的,如果要用代碼轉的話,參考TFiler物件,和Delphi基類中的DefineProperties方法中對序列化的處理的寫入和讀取函式。
uj5u.com熱心網友回復:
一年前的帖子了,最近分析這個,也看過這個帖子,沒找到答案。
最后自己去比較,發現并不是大神說的那么復雜,
用二進制編輯器,就會發現,delphi只是在圖片的十六進制序列前加了一段自己的識別編碼,通常為20~30位,不同格式的圖片所加長度不同,jpg,bmp,png都測驗過。ico沒做測驗。
uj5u.com熱心網友回復:
再說一下,我只在image控制元件上測驗,沒在其他控制元件上測驗,不知道是否一樣uj5u.com熱心網友回復:
看了是我搞錯了,這個imagelist還真不一樣。。。和image不同編碼uj5u.com熱心網友回復:
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;
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/53692.html
標籤:語言基礎/算法/系統設計
