13
A
回答
5
作爲響應的一部分,Win32 GetIconInfo
調用將返回圖標的源位圖。您可以從中獲取圖標圖像大小。
Dim IconInf As IconInfo
Dim BMInf As Bitmap
If (GetIconInfo(hIcon, IconInf)) Then
If (IconInf.hbmColor) Then ' Icon has colour plane
If (GetObject(IconInf.hbmColor, Len(BMInf), BMInf)) Then
Width = BMInf.bmWidth
Height = BMInf.bmHeight
BitDepth = BMInf.bmBitsPixel
End If
Call DeleteObject(IconInf.hbmColor)
Else ' Icon has no colour plane, image data stored in mask
If (GetObject(IconInf.hbmMask, Len(BMInf), BMInf)) Then
Width = BMInf.bmWidth
Height = BMInf.bmHeight \ 2
BitDepth = 1
End If
End If
Call DeleteObject(IconInf.hbmMask)
End If
8
這裏是一個代碼C++版本:
struct MYICON_INFO
{
int nWidth;
int nHeight;
int nBitsPerPixel;
};
MYICON_INFO MyGetIconInfo(HICON hIcon);
// =======================================
MYICON_INFO MyGetIconInfo(HICON hIcon)
{
MYICON_INFO myinfo;
ZeroMemory(&myinfo, sizeof(myinfo));
ICONINFO info;
ZeroMemory(&info, sizeof(info));
BOOL bRes = FALSE;
bRes = GetIconInfo(hIcon, &info);
if(!bRes)
return myinfo;
BITMAP bmp;
ZeroMemory(&bmp, sizeof(bmp));
if(info.hbmColor)
{
const int nWrittenBytes = GetObject(info.hbmColor, sizeof(bmp), &bmp);
if(nWrittenBytes > 0)
{
myinfo.nWidth = bmp.bmWidth;
myinfo.nHeight = bmp.bmHeight;
myinfo.nBitsPerPixel = bmp.bmBitsPixel;
}
}
else if(info.hbmMask)
{
// Icon has no color plane, image data stored in mask
const int nWrittenBytes = GetObject(info.hbmMask, sizeof(bmp), &bmp);
if(nWrittenBytes > 0)
{
myinfo.nWidth = bmp.bmWidth;
myinfo.nHeight = bmp.bmHeight/2;
myinfo.nBitsPerPixel = 1;
}
}
if(info.hbmColor)
DeleteObject(info.hbmColor);
if(info.hbmMask)
DeleteObject(info.hbmMask);
return myinfo;
}
相關問題
- 1. GridPanel如何確定大小?
- 2. 如何確定給定標準的連續範圍的大小?
- 3. 如何使用標題確定精確的PE圖像文件大小?
- 4. 如何減小JCheckBox圖標的大小?
- 5. 確定操作欄菜單中圖標的正確大小
- 6. 如何確定SmartGWT標籤或HTMLFlow的大小以適應內容的大小?
- 7. 如何繪製HICON?
- 8. 確定當前光標的大小
- 9. 如何確定C#對象的大小
- 10. 如何確定AUSampler實例的大小?
- 11. 如何確定嵌套SVG的大小?
- 12. 如何確定WindowsFormsHost的大小?
- 13. GridBagLayout如何確定容器的大小
- 14. 如何在extjs中正確設置按鈕的圖標大小?
- 15. 如何確定WPF中的光標大小?
- 16. 如何自定義圖標圖像的大小?
- 17. 使用xslt確定圖形的大小
- 18. 確定RecyclerView中視圖的大小
- 19. 確定圖像文件大小的PHP
- 20. 在Rails中確定圖片的大小
- 21. 何處確定UIView大小
- 22. 如何爲我的networkx圖指定確切的輸出大小?
- 23. 如何更改raphael圖標的大小?
- 24. 正確綁定到畫布對象的大小圖標
- 25. Android自適應圖標的正確圖標大小
- 26. 如何確定圖表的大小以始終填充空間
- 27. 如何「滾動」不確定大小的視圖?
- 28. 如何確定圖片的大小而不用下載(全部)?
- 29. 如何確定縮略圖之間的大小(JavaScript/jQuery滑塊)?
- 30. Android:如何確定視圖的新大小
謝謝,正常工作與我的彩色圖標。掩碼中「Height = BMInf.bmHeight \ 2」的用途是什麼? – Timbo 2009-12-16 09:53:12
@Timbo:參見msdn:ICONINFO,一個單色圖標包含hbmMask中的圖像和XOR掩碼。 – peterchen 2011-01-18 07:35:57