从流中将特定图标大小加载到TIcon中

时间:2011-01-04 00:35:21

标签: delphi icons favicon delphi-xe glyph

我的应用程序下载并显示特定网站的favicon。我跟着Bing的solution来检测来自流的图像格式,但又遇到了另一个障碍。假设一个实际的图标图像,代码如下:

var
  icon : TIcon;
begin      
  icon := TIcon.Create;
  try
    icon.LoadFromStream( faviconStream );
    spFavicon.Glyph.Assign( icon );
  finally
    icon.Free;
  end;
end;

spFavicon 是来自Raize Components的TRzGlyphStatus。它的Glyph属性是TBitmap)

现在,这可行,但有时下载的图标包含不同大小的多个图像,例如32x32除了预期的16x16。由于某种原因,控件的Glyph属性选择较大的大小。

如何将仅16x16尺寸加载到TIcon,或从TIcon加载到TBitmap?

测试图标:http://www.kpfa.org/favicon.ico

编辑:如果可能的话,我宁愿避免先将图标保存到文件中。

1 个答案:

答案 0 :(得分:0)

.ico文件的文件格式的主要来源是MSDN。你应该能够从中解决这个问题。

Graphics.pas中的ReadIcon程序可能有用,但我想你只需找到16x16,因为你正在寻找favicon。

如果你想变得非常可爱,你可以将源代码下载到Firefox,并查看它们如何处理favicon。