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

請教如何在Image上放文字?

答題得分者是:Windyboy
danielj
初階會員


發表:65
回覆:135
積分:40
註冊:2003-06-11

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-07-21 10:17:36 IP:61.220.xxx.xxx 未訂閱
小弟曾嘗試在Image上放文字,但是無法成功,我失敗的程式碼如下: Image1->Picture->LoadFromFile("c:\\0000.jpg"); Image1->Canvas->TextRect(Rect(0,0,40,20),0,0,"test2"); //或者 Image1->Canvas->TextOutA(0,0,"Test"); compile沒問題,但是執行時出現 'Can only modify an image if it contains a bitmap' 的錯誤 看起來好像是不能用我所想到的那兩種方式,難道只能放一個Label在上面顯示了嗎? 先感謝大家花時間幫忙看,謝謝!
brook
資深會員


發表:57
回覆:323
積分:371
註冊:2002-07-12

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-07-21 11:19:11 IP:218.160.xxx.xxx 未訂閱
我的bcb5沒問題,可以show.
Windyboy
版主


發表:7
回覆:119
積分:210
註冊:2002-11-07

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-07-21 11:30:33 IP:61.59.xxx.xxx 未訂閱
Hi danielj: 這個Error Message應該是因為你載入的是JPEG圖檔, 所以你可以試著載入BMP應該就沒問題,如果一定要載入JPEG, 你可以先用TJPEGImage載入, 再轉成BMP, 請參考^_^ TJPEGImage *jpgTemp = new TJPEGImage(); jpgTemp->LoadFromFile("Sample.jpg"); Image1->Picture->Bitmap->Assign(jpgTemp); delete jpgTemp; 再 Image1->Canvas->TextOutA(0, 0, "Test"); 應該就沒問題了.^_^ -------------------------- ~天下本無事 庸人自擾之~
danielj
初階會員


發表:65
回覆:135
積分:40
註冊:2003-06-11

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-07-21 14:37:11 IP:61.220.xxx.xxx 未訂閱
感謝Windyboy兄的回答,我試過了,真的可以秀文字在圖上了。 但是能否再接著問一下,這樣子的文字會變成一個方框在圖上,能否讓文字的底色變成透明,也就是說除了字本身外,不要有整個Text方塊在呢? 另外,由於我這邊並不是整個Image只放一張圖,所以我將程式碼改為 : : Graphics::TBitmap *bitmap; bitmap->Assign(myjpg); 但是這樣執行的時候會出現Access Violation錯誤,也想請教大家應該怎麼寫才好… 再次感謝大家! 發表人 - danielj 於 2003/07/21 14:55:40
Windyboy
版主


發表:7
回覆:119
積分:210
註冊:2002-11-07

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-07-21 14:43:46 IP:61.59.xxx.xxx 未訂閱
Hi danielj: 你可以在TextOut之前加一行 Image1->Canvas->Brush->Style = bsClear; 就行囉..^_^ -------------------------- ~天下本無事 庸人自擾之~
danielj
初階會員


發表:65
回覆:135
積分:40
註冊:2003-06-11

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-07-21 16:11:10 IP:61.220.xxx.xxx 未訂閱
再次感謝Windyboy的回答,這一部分的問題沒了,但是有關 bitmap->Assign(myjpg)的問題以及要如何確保文字能夠從圖片上很明顯地被分辨出來呢(若字是黑色,圖片在同位置也是暗色的話文字就看不太出來,反之亦同)? 感謝大家的幫忙!
Windyboy
版主


發表:7
回覆:119
積分:210
註冊:2002-11-07

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-07-21 17:19:13 IP:61.59.xxx.xxx 未訂閱
Graphics::TBitmap *bitmap; 改成 Graphics::TBitmap *bitmap = new Graphics::TBitmap(); 因為沒有new, 所以會產生Access violation, 至於文字要顯著的問題, 我沒試過耶, 我再研究看看, 我只知道設定Canvas->Pen->Mode = pmXor 這樣線條就會有Xor的作用, 但是對文字好像沒用, 有哪位大大知道的, 幫個忙吧^_^ -------------------------- ~天下本無事 庸人自擾之~
系統時間:2024-05-16 19:43:55
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!