我在Windows 10上運行,但使用Delphi 7(是的,我知道這是相當古老)。Windows小系統圖標高度不正確
我想使用Windows中的系統圖標,並通過定義TImageList
稱爲SystemIcons
了關於這個,我初始化如下:
var
fileInfo: TSHFileInfo;
begin
SystemIcons.Handle := ShGetFileInfo('', 0, fileInfo, SizeOf(fileInfo),
SHGFI_ICON or SHGFI_SMALLICON or SHGFI_SYSICONINDEX);
...
我有靜態設定爲與寬度的TImageList
組件SystemIcons
性能和高度設置爲16.
在其他地方,我希望從給定有效shell對象的圖像索引的圖像列表中檢索圖標。因爲這些是「小系統圖標」,我預計它們是16x16。調用GetSystemMetrics(SM_CYSMICON)
的結果得出16.奇怪的是,尺寸取決於我是將它們檢索爲位圖還是圖標。
...
var
icon: TIcon;
bm: TBitmap;
begin
...
icon := TIcon.Create;
SystemIcons.GetIcon(imgIndex, icon);
bm := TBitmap.Create;
SystemIcons.GetBitmap(imgIndex, bm);
imgIndex
在這兩種情況下都是正確的。按預期檢索到的圖像在每種情況下都是相同的。位圖的尺寸(bm.Width
和bm.Height
)也如預期:16x16。但是,圖標的尺寸(icon.Width
和icon.Height
)不是。他們是32x32。
當我在畫布上繪製圖標時,它顯示爲16x16。所以只有它的Height
和Width
值看起來不正確。很奇怪。
爲什麼這些不同?
計算機上連接了多少個屏幕。他們中的一個是高分辨率的嗎? –
@DavidHeffernan只有一個屏幕。我正在使用筆記本電腦。 – lurker