如何判斷 TImage is empty |
答題得分者是:kuraki5336
|
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
請問各位:
我要判斷 Image1.Bitmap 是否為空的, 雖然有提供 Image1.Bitmap.Clear() 及 Image1.Bitmap.isEmpty 但現在的問題是 一開始使用 Image1.Bitmap.Isempty 是可以偵測為 True 但如果我做了 I.Bitmap1.Assing(...) 之後, 再下 Clear 清空, 回頭測 IsEmpty = False 我也嘗試了以下的可能性 利用 Bitmap.SetSize(0,0) 或 Bitmap.ReSize(0,0) 或 利用一個 Image2 (空的) Assign 給 Image1 但都沒有用 不知還有沒有其他方法可以讓 Image1 真的清空? 謝謝! |
kuraki5336
初階會員 發表:13 回覆:35 積分:34 註冊:2010-06-09 發送簡訊給我 |
|
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
|
kuraki5336
初階會員 發表:13 回覆:35 積分:34 註冊:2010-06-09 發送簡訊給我 |
|
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
更正, 是我誤會了
我有兩個 TBitmap 的元件, 一個是 xe 內建的 TImage, 另一個是 第三方控件的, 不是TImage, 而是屬 TBtimap 屬性 Image1.Bitmap := nil 確實可行 但我那個元件(TMS FMX 元件, 是一個可執行簽名的 Image 元件), 用 xxxx := nil 無法編譯, 錯誤是右方為唯讀, 不能指定, 而我要判斷的是這個簽名Image 是否有簽名, 有的話才指給 Image, 沒有的話提警告, 所以目前是找不到方法可以偵測這個元件 Bitmap是否為空, 不過是TMS的元件, 因為沒人可以解答了吧! 我也試過 Create 一個 Image (Image1.Bitmap := TBitmap.Create), 再 assign 給這個元件, 也無法判斷是空的.... 只好在另外想其他可能的方法吧! |
kuraki5336
初階會員 發表:13 回覆:35 積分:34 註冊:2010-06-09 發送簡訊給我 |
我自行解決了。
http://delphi.ktop.com.tw/board.php?cid=30&fid=1501&tid=106712 剛好看到你們之前的討論串。 突發奇想地把 【Resource】裡面的那個0-default給砍掉。就成功地引用了。 他目前 【Resource】 會有兩個 0-default 、1-Windows10 Backgroud [這名稱應該是看你OS哪一個版本].... 我在想應該跟我Form指定的資源檔有關。晚些研究到底是哪邊要調整在分享。 當然直接砍到0-Default 也行 |
leveon
資深會員 發表:30 回覆:389 積分:303 註冊:2012-02-12 發送簡訊給我 |
|
sryang
尊榮會員 發表:39 回覆:762 積分:920 註冊:2002-06-27 發送簡訊給我 |
|
tick228
高階會員 發表:1 回覆:47 積分:104 註冊:2003-11-03 發送簡訊給我 |
|
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
感謝各位給予的指導,
經過這次的設計, 對 TImage 有更多的了解, 發現 1. Clear() 不是清空, 因為它只是將一個顏色填充整個 Image, 並不是我們想的是清除圖像 2. IsEmpty 也不是我們想像中的"空白", IsEmpty 是判斷 bitmap width or height = 0 3. Bitmap=nil , 利用 IsEmpty 才能取得 True 值 不過這幾天都在想辦法要達到我要的目的, 所以嚴格說起來, 這帖的主旨下的不恰當, 因為我有兩個 Image, 一個是標準的 TImage, 一個是 TMS 的 Signature 的簽名元件(TBitmap) 我利用 Signature 元件進行簽名後, 要導到 TImage 儲存, 也就是當簽名有內容時(就是有實際寫下簽名的動作), 導入到 TImage中, 如果沒有簽名, 或清掉原簽名, 就要把 TImage 清空, 一直在判斷 Signature 卡關, 無法判斷這個Bitmap 是否有簽名 所以主旨應該下, 如何判斷 TBitmap 有圖像才比較切題 這幾天的研究下來, 終於找到一個方法且實證可行, 就是我設置一個 MemTable(用 FireDac, kbm均可), 裡面有兩個欄位都是 Blob 的型態 在 Form Create 時, 先儲入 Signature 空的Bitmap到 Blob1 在 簽名後, 存入到 Blob2 欄位 再利用 TBlobField(xxxxxx).BlobSize 來比對兩個欄位大小, 如果一樣的話, 代表簽名後的Bitmap是空的, 就指定 Image1.Bitmap := nil, 如果不是, 則 Image1.Bitap.Assing(Signature) , 至少到目前為止可以達成我要的目的, 所以再次感謝各方指導 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |