程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> VC >> 關於VC++ >> 告別圖標失真的煩惱

告別圖標失真的煩惱

編輯:關於VC++

示例代碼運行效果圖

自從和VC知識庫認識之後我認識了不少朋友,有的象我一樣走著苦苦探索的道路。其中有很多朋友問我在VC中如何保證256色以上的圖標加載後不失真。根據這些提問我也曾經到各個站點上尋求答案,結果是大失所望,雖然有介紹如何實現256色以上的工具欄的文章,但是方法中大都采用加載一幅256色以上的工具欄位圖的方法。這樣的方法存在一個麻煩就是:有什麼簡便好用的制圖工具來做這樣的位圖呢?我雖然沒有嘗試過去尋找這樣的工具,但是我知道大家都希望有更直接的方法來使用256色以上的圖標,並且保持最終的效果不失真!

所以針對以上問題我研究了MSDN,費了九牛二虎的勁最終才"修成正果",哈哈!不過有快樂得和大家一起分享,希望我的努力沒有白費,好了,廢話少說,咱們立刻揭開它神秘的面紗吧。

一. 建立一個單文檔工程(多文檔也可)。

二. 在主框架CMainFrame類的頭中定義一個CImageList對象。

三. 在主框架CMainFrame類的OnCreate處理中創建CImageList對象並且向其中添加你想要的圖標。

其中CImageList的創建是本工程最最關鍵的一步,如果寫錯,那你就回到原處,結果是空空如也。哈哈!

m_ilTB.Create(32, 32, TRUE | ILC_COLOR8, 4, 0); //設置ToolBar的圖標列表

現在對這幾個參數做個詳細介紹如下:

1.前兩個參數指定圖標的寬度和高度,即:圖標的尺寸定義。

2.第三個參數指定何如顯示圖標。ILC_ COLOR8說明以256色調色板來顯示圖標。而TRUE則指明了以透明方式來顯示圖標。那麼兩者進行"按位或"運算後的意義變為:以透明方式來顯示256色圖標。

3.第四和第五個參數則分別為:初始圖標個數和新增圖標時對象自動申請內存空間的步長。如果在大批量操作圖標,並且需要不斷的增刪圖標時,設置第五個參數可以改變程序的性能,如果第五個參數設置的比較適中則可以避免程序反復的申請和釋放內存空間。

四. 最後的一步就是加載和添加圖標資源了。

HICON hIcon = NULL;
hIcon = (HICON)::LoadImage(::AfxGetInstanceHandle(),
MAKEINTRESOURCE(IDI_ICON1), IMAGE_ICON, 32, 32, 0);
m_ilTB.Add(hIcon);

好了,一切就是這麼簡單,如果你還不清楚的話,那就打開工程看看吧,如你有什麼問題也不要忘記來信告訴我哦!最後祝大家學習愉快,多多交流,多多進步,一切順利!

本文配套源碼

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved