isp*_*iro 6 c# winforms windows-api-code-pack
我正在使用WindowsAPICodePack,获取ShellFile的缩略图.但是其中一些看起来像通用图标 - 具有黑色背景.因此,我将其设为Bitmap并将Black设置为透明.
问题是,当它是图片的缩略图时 - 它不应该这样做.如何从"图标"中分辨出真实的缩略图?
我的代码:
ShellFile sf = ShellFile.FromFilePath(path);
Bitmap bm = sf.Thumbnail.MediumBitmap;
bm.MakeTransparent(Color.Black);
Run Code Online (Sandbox Code Playgroud)
谢谢
你可以从另一个角度来解决这个问题。可以强制 ShellFile.Thumbnail 仅提取存在的缩略图图片,或者强制它提取关联的应用程序图标。
所以你的代码看起来像这样:
Bitmap bm;
using (ShellFile shellFile = ShellFile.FromFilePath(filePath))
{
ShellThumbnail thumbnail = shellFile.Thumbnail;
thumbnail.FormatOption = ShellThumbnailFormatOption.ThumbnailOnly;
try
{
bm = thumbnail.MediumBitmap;
}
catch // errors can occur with windows api calls so just skip
{
bm = null;
}
if (bm == null)
{
thumbnail.FormatOption = ShellThumbnailFormatOption.IconOnly;
bm = thumbnail.MediumBitmap;
// make icon transparent
bm.MakeTransparent(Color.Black);
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1616 次 |
最近记录: |