Support setting notification tray icon as a png

This commit is contained in:
Daniel Clark
2021-02-14 22:03:12 +00:00
parent 50033d9aa3
commit b920a4622a
7 changed files with 16 additions and 5 deletions
@@ -18,16 +18,25 @@ namespace TheXamlGuy.NotificationFlyout.Shared.UI.Extensions
var uri = $"{AppDomain.CurrentDomain.BaseDirectory}{bitmapImage.UriSource}".Replace("ms-appx:///", "").Replace("/", "\\");
using var stream = File.OpenRead(uri);
return new Icon(stream, new Size(PInvoke.GetSystemMetricsForDpi((int)SystemMetricFlag.SM_CXICON, dpi), PInvoke.GetSystemMetricsForDpi((int)SystemMetricFlag.SM_CYICON, dpi)));
return ExtractIcon(dpi, stream);
}
else
{
var storageFile = await Windows.Storage.StorageFile.GetFileFromApplicationUriAsync(bitmapImage.UriSource);
using var stream = await storageFile.OpenStreamForReadAsync();
return new Icon(stream, new Size(PInvoke.GetSystemMetricsForDpi((int)SystemMetricFlag.SM_CXICON, dpi), PInvoke.GetSystemMetricsForDpi((int)SystemMetricFlag.SM_CYICON, dpi)));
return ExtractIcon(dpi, stream);
}
}
private static Icon ExtractIcon(uint dpi, Stream stream)
{
var bitmap = (Bitmap)Image.FromStream(stream);
var icon = Icon.FromHandle(bitmap.GetHicon());
return new Icon(icon, new Size(PInvoke.GetSystemMetricsForDpi((int)SystemMetricFlag.SM_CXICON, dpi), PInvoke.GetSystemMetricsForDpi((int)SystemMetricFlag.SM_CYICON, dpi)));
}
private enum SystemMetricFlag : int
{
SM_CXICON = 11,