From 1dd49c6d93b799852daa3cc9d3db82a831bbdef3 Mon Sep 17 00:00:00 2001 From: CJKmkp <2564608840@qq.com> Date: Tue, 3 Mar 2026 16:07:58 +0800 Subject: [PATCH] fix:issue #387 --- Ink Canvas/MainWindow.xaml | 7 +++- Ink Canvas/MainWindow_cs/MW_Settings.cs | 50 +++++++++++++++++-------- 2 files changed, 41 insertions(+), 16 deletions(-) diff --git a/Ink Canvas/MainWindow.xaml b/Ink Canvas/MainWindow.xaml index 2b619f17..11d3c1ae 100644 --- a/Ink Canvas/MainWindow.xaml +++ b/Ink Canvas/MainWindow.xaml @@ -7699,6 +7699,7 @@ @@ -7709,7 +7710,11 @@ MouseDown="SymbolIconEmoji_MouseDown" MouseUp="SymbolIconEmoji_MouseUp"> - + = 12 && index - 12 < Settings.Appearance.CustomFloatingBarImgs.Count) @@ -1553,18 +1552,39 @@ namespace Ink_Canvas var customIcon = Settings.Appearance.CustomFloatingBarImgs[index - 12]; try { - FloatingbarHeadIconImg.Source = new BitmapImage(new Uri(customIcon.FilePath)); + var dpi = VisualTreeHelper.GetDpi(this); + var targetPixels = (int)Math.Round(58 * dpi.DpiScaleX); + var decodePixels = targetPixels * 2; + if (decodePixels < 64) decodePixels = 64; + if (decodePixels > 512) decodePixels = 512; + + FloatingbarHeadIconImg.Source = CreateBitmapImage(new Uri(customIcon.FilePath), decodePixels); FloatingbarHeadIconImg.Margin = new Thickness(2); } catch { // 如果加载失败,使用默认图标 - FloatingbarHeadIconImg.Source = new BitmapImage(new Uri("pack://application:,,,/Resources/Icons-png/icc.png")); + FloatingbarHeadIconImg.Source = CreateBitmapImage(new Uri("pack://application:,,,/Resources/Icons-png/icc.png")); FloatingbarHeadIconImg.Margin = new Thickness(0.5); } } } + private static BitmapImage CreateBitmapImage(Uri uri, int decodePixelWidth = 0) + { + var image = new BitmapImage(); + image.BeginInit(); + image.UriSource = uri; + image.CacheOption = BitmapCacheOption.OnLoad; + if (decodePixelWidth > 0) + { + image.DecodePixelWidth = decodePixelWidth; + } + image.EndInit(); + image.Freeze(); + return image; + } + /// /// 更新组合框中的自定义图标选项 ///