2013-10-21 99 views
0

我正在使用舊的MFC應用程序。 該應用程序使用施加在按鈕一些圖標,例如:從圖標中修剪空白

m_btnMyButton.SetIcon(IDI_ICON21, BS_CENTER, IDI_ICON21); 

我想放置的圖標的按鈕的中心,然而,圖標本身不居中。基本上它們似乎被隨機數量所抵消。例如:enter image description here(我添加了黑色的矩形來表示我的意思)。 (我知道ImageMagik可以批量爲我做這個)。但我不想改變磁盤上的原始圖標(可能是在其他地方使用)。

我想要做的是可能在我的代碼中做一個函數,在應用圖標之前進行這種修剪。這樣我就不用擔心任何新的或錯過的圖標。

任何人都可以提供一些關於如何「修剪」我的代碼中的圖標的見解? 需要記住的是,這些圖標的偏移量是隨機的,所以我需要先找到要修剪的偏移量。

回答

-1

如果將按鈕定義爲所有者繪製,則可以在渲染按鈕時將圖標放置在任何位置。

+0

OP很清楚,該圖標可以呈現在任何地方。問題是,**在哪裏**他們應該被渲染,僅基於圖像信息。 – IInspectable

-1

創建執行以下功能:

  1. 創建圖標的大小的DC
  2. 用透明色填充DC
  3. DrawIcon api繪製帶有所需x/y偏移量的圖標。
  4. 從該位圖中創建一個新圖標。
+0

我需要找到x/y偏移量,就是這個問題。 – manimatters

+0

@manimatters - 您可以直觀地決定每個圖標的值,並在函數調用中對它們進行硬編碼以創建一個新圖標。或者,如果您希望它是自動的,則可以掃描DC中透明顏色的圖標像素,從每邊垂直/水平線格式掃描圖標的最小邊界矩形。 – coder123

+0

沒有*「透明色」*這樣的東西。一個圖標由兩個位圖組成:圖像信息和掩碼。遮罩控件,圖像數據的哪些區域應呈現,哪些區域應保留其以前的顏色。 – IInspectable