MFC實現256色工具欄圖標及工具欄提示信息

    MFC中,ToolBar上的button繪製圖標,默認只支持16色,如果從Icon資源將超過16色的bmp拷貝到ToolBar的button上會出現顏色失真,網上有使用CImageList實現256色工具欄圖標的方法,我只是簡單地看了看,沒有去實現,這裏介紹另外一種簡單的實現256色工具欄圖標的方法:

首先,在設計工具欄按鈕功能的時候,我們可以先忽略button的圖標,可以先在button上寫上文字或者隨意畫點東西,只要能讓自己識別這個button就行;

然後,在編譯之後,在工程對應的資源文件夾下面,會有剛纔建立的工具欄對應的長條形的bmp,我們假設生成的是view.bmp,這個bmp圖片最多隻包含了16色;

最後,我們將自己的256色的長條形的bmp拷貝到view.bmp所在的資源文件夾下面,刪除原來的view.bmp,將剛纔拷貝進來的256色的bmp名字改爲view.bmp就大功告成了.

(由於我們的圖標都是16*16或者32*32的單個小圖標,而前面提到的是將一系列小圖標組成的長條形的圖標,怎麼實現呢?如果你會PS,可以用這個實現,這裏給推薦一個小工具MergePic,下載地址)


記得先clean solution,再build solution,再運行,這樣就能看到256色的工具欄圖標了


關於工具欄button,當鼠標經過時,如果要顯示提示信息,可以在button的屬性的Prompt盡心設置,例如"\n打開"或者“打開已存在的文件\n打開”,至於這兩種寫法的區別,可以自己試試看看效果。


這裏還有個問題有待解決:怎麼將工具欄button上的bmp圖片背景設置爲透明


8月18日補充

前面留下了兩個問題沒能順利解決:

1.工具欄使用32*32的圖標,而工具欄對應的菜單項前面的圖標顯然小於32*32,而當MFC自動關聯ID相同的菜單項和工具欄按鈕時,會將工具欄上的圖標繪製到菜單項前面,當我們使用顏色深度爲32位的bmp時,由於工具欄按鈕圖標大於菜單項需求圖標尺寸,會導致菜單項前面的圖標顯示不完整

解決方案:將工具欄圖標保存爲24位的bmp,這樣MFC能自動將工具欄圖標縮小後顯示在菜單項前面。這裏我用畫圖工具將bmp另存爲24位位圖之後,在圖片的屬性查看位圖信息時,仍然顯示是32位的,一開始沒注意這個問題,耽誤了不少時間,後來我先將32位位圖保存爲png格式,再將png另存爲24位bmp,問題解決了;


2.使用1中生成的bmp,顯示在軟件界面,會發現背景是白色的,看上去不自然,而MFC框架自動生成的"打開、保存“工具欄的背景確是透明的,怎麼實現類似的效果呢?

解決方案:利用QQ截屏時顯示像素值的功能查看了下MFC自帶工具條圖標的背景色,也就是常見的那種灰色,RGB值爲192,192,192,於是我將圖標所有的白色背景利用畫圖工具改成了RGB(192,192,192),然後重新調試,編譯,背景也透明瞭(估計MFC將RGB(192,192,192)設置爲了透明色,猜想

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章