簡體   English   中英

如何使用Delphi從另一個文件的資源加載單個圖標?

[英]How to load a single icon from the resources of another file using Delphi?

我想加載一個圖標(來自另一個文件),其中沒有嵌入多個圖標(它不是圖標組)。 我不知道它的大小。 我現在使用此代碼來檢索圖標的句柄並將其與TIcon.Handle一起使用:

function ResourceToIconHandle(hFile: hModule; IDname: PChar): HICON;
var
   hGicon1,
   hLoadIcon1: THandle;
   pGIcon1: Pointer;
begin
   hGicon1 := FindResource(hFile, IDName, RT_ICON);
   if hGicon1 <> 0 then
   begin
      hLoadIcon1 := LoadResource(hFile, hGicon1);
      pGicon1 := LockResource(hLoadIcon1);
      Result := CreateIconfromResource(pGicon1,
           SizeofResource(hFile, hGicon1),
           True,
           $00030000);
   end;
end;

是的,它只是代碼的一部分(如果你想要我全部顯示)。 它僅適用於一個問題:CreateIconfromResource函數給我任何以32x32拉伸的圖標:

1

但我希望以原始分辨率獲取圖標: 2

我知道CreateIconfromResource旨在使它們處於相同的分辨率,這就是我正在尋找另一個功能的原因。 謝謝您的幫助。

使用CreateIconFromResourceEx而不是CreateIconFromResource

CreateIconFromResourceEx允許您提供所需的寬度/高度,而CreateIconFromResource使用默認的系統mertics(如LR_DEFAULTSIZE ):

如果cxDesired或cyDesired值設置為零,則使用光標或圖標的系統度量值指定的寬度或高度。 如果未指定此標志且cxDesired和cyDesired設置為零,則該函數使用實際資源大小。 如果資源包含多個圖像,則該函數使用第一個圖像的大小。

Roman R.可能是對的,但我還補充說, 設置其Handle 之前 ,必須設置TIcon對象的正確尺寸。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM