Support setting notification tray icon as a png
This commit is contained in:
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user