線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2040
推到 Plurk!
推到 Facebook!

請問如何將圖檔包含在程式碼中?

答題得分者是:wameng
ak06407
一般會員


發表:7
回覆:9
積分:8
註冊:2003-07-10

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-09-22 10:07:57 IP:61.230.xxx.xxx 未訂閱
請問: 我的應用程式包含一些圖檔,如何可以將這些圖檔直接寫入到程式碼中? 謝謝! kevin
------
kevin
richtop
資深會員


發表:122
回覆:646
積分:468
註冊:2003-06-10

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-09-22 10:31:46 IP:211.76.xxx.xxx 未訂閱
ak06407 您好: 一個簡單的方式提供您參考, 建立Image或ImageList,並將圖形選入其中即可。 RichTop 敬上 =====***** 把數學當工具,可以解決問題;將數學變能力,能夠發現並解決問題! =====#####
wameng
版主


發表:31
回覆:1336
積分:1188
註冊:2004-09-16

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-09-22 10:34:32 IP:61.222.xxx.xxx 未訂閱
寫一個資源列表文件(*.rc)列出圖片及相應資源名稱 例如: ABC.rc ---> (可以建立純文字檔案後,在修改副檔名) 內容: ..... A1 BITMAP "A1.BMP" A2 BITMAP "A2.BMP" A3 BITMAP "A3.BMP" ..... 用BRCC32.EXE將其編譯為res文件 在單元文件中加入 {$R *.dfm} {$R abc.res} 使用win api loadbitmap從資源中裝入點陣圖 var Form1: TForm1; implementation {$R *.DFM} {$R ABC.res} //必須和專案檔放在同一目錄下。 procedure TForm1.FormCreate(Sender: TObject); begin bmp := TBitmap.Create; bmp.LoadFromResourceName(HInstance, 'A1'); Image1.Picture.Bitmap := bmp; end; procedure TForm1.FormDestroy(Sender: TObject); begin bmp.Free; end;
ak06407
一般會員


發表:7
回覆:9
積分:8
註冊:2003-07-10

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-09-22 10:52:16 IP:61.230.xxx.xxx 未訂閱
對不起,我的意思是: 我不想讓使用者運用我的原始圖檔,而且IMAGE呼叫的圖檔會隨時間變換(由程式控制),所以想將圖檔的內容,直接以陣列或其他的的方式寫入在程式碼中,這樣子就可以確保顯示的圖案不被串改! 謝謝! kevin
------
kevin
wameng
版主


發表:31
回覆:1336
積分:1188
註冊:2004-09-16

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-09-22 10:58:57 IP:61.222.xxx.xxx 未訂閱
利用 Stream 做圖檔加密就好了。 我的想法是在Res中定義自己的型態 並先加密後產生圖檔編譯到Res中 使用時再解密就好了! 這樣的做法,必較保險!
ak06407
一般會員


發表:7
回覆:9
積分:8
註冊:2003-07-10

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-09-22 11:29:58 IP:61.230.xxx.xxx 未訂閱
您好: 這樣是有加密的效果,可是有沒有方法將這些圖檔直接存入在原始碼中? 謝謝! kevin
------
kevin
wameng
版主


發表:31
回覆:1336
積分:1188
註冊:2004-09-16

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-09-22 12:08:20 IP:61.222.xxx.xxx 未訂閱
要不 Const Image1Str = '圖片內容5449630001000100372C000001001800681E000016' ' ...... .....'; 使用時在轉換為 Stream 再用 Image1.Picture.Bitmap.LoadFromStream
ak06407
一般會員


發表:7
回覆:9
積分:8
註冊:2003-07-10

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-09-22 12:30:47 IP:61.230.xxx.xxx 未訂閱
好耶!就是這個方法! 可是要如何先將圖檔轉換為字串呢? 有沒有範例可以參考?謝謝! kevin
------
kevin
wameng
版主


發表:31
回覆:1336
積分:1188
註冊:2004-09-16

發送簡訊給我
#9 引用回覆 回覆 發表時間:2004-09-22 13:23:45 IP:61.222.xxx.xxx 未訂閱
以下是以 JPEG 的圖檔示範。 圖檔取得非常簡單。 可利用Delphi 用Image 先載入該圖,在表單上按下Alt F12 就可以知道圖檔文字格式。 不過要注意!Delphi 會加一些識別進去。 可能還是要用UltraEdit-32 Text Editor 看一下! Uses jpeg; const ImageStr = 'FFD8FFE000104A46494600010101000000' '000000FFDB0043000C08090A09070C0A0A0A0D0D0C0E121E1312101012241A1B' '151E2B262D2C2A2629292F35443A2F32403329293B513C4046494C4D4C2E3954' '5A534A59444B4C49FFDB0043010D0D0D12101223131323493129314949494949' '4949494949494949494949494949494949494949494949494949494949494949' '49494949494949494949494949FFC20011080010001003012200021101031101' 'FFC4001500010100000000000000000000000000000403FFC400150101010000' '0000000000000000000000000004FFDA000C0301000210031000000151EE54BF' 'FFC4001A100003000301000000000000000000000001020304131424FFDA0008' '0101000105026F405AE8761CE272390FFFC40017110003010000000000000000' '000000000000021112FFDA0008010301013F01ADB3FFC4001A11000202030000' '0000000000000000000001020003111271FFDA0008010201013F015AF03673C9' 'FFC4001D100001040203000000000000000000000002000111211213324142FF' 'DA0008010100063F02DA4F21D0A170961F42B021A9A255C66DD7FFC4001C1001' '000202030100000000000000000000010011215141718131FFDA000801010001' '3F21BDAD9BD271EC1776287226FB97AEAE57C4E3D8702E8301DEE7FFDA000C03' '0100020003000000107FFFC40018110002030000000000000000000000000000' '01213171FFDA0008010301013F108C92DB3FFFC4001A11000202030000000000' '00000000000000012111310051C1FFDA0008010201013F109C34B41A76076A33' 'FFC4001B10010101000301010000000000000000000111210031416151FFDA00' '08010100013F1035DC0703531666D77B41939698F631A8173F0FC3CB52E2EEC7' '0816423133D4CDE49E79E012CE98486FD86F3FFFD9'; procedure TForm1.FormCreate(Sender: TObject); var AStream :TMemoryStream; i:integer; AByte : Byte; JPEGImage :TJPEGImage; begin AStream :=TMemoryStream.Create; Try AStream.Position := 0; For I:=1 to (Length(ImageStr) Div 2) do begin AByte := BYTE(Strtoint('$' Copy(ImageStr,I*2-1,2))); AStream.Write(AByte,1); end; AStream.Position := 0; JPEGImage :=TJPEGImage.Create; Try JPEGImage.LoadFromStream(AStream); Image1.Picture.Assign(JPEGImage); finally JPEGImage.Free; end; finally AStream.Free; end; end; 發表人 - wameng 於 2004/09/22 13:27:33
系統時間:2024-04-29 4:31:47
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!