From f641b282b61beb0ac9272afe7707e8e6ff8c52bb Mon Sep 17 00:00:00 2001 From: CJKmkp <2564608840@qq.com> Date: Mon, 21 Jul 2025 12:15:56 +0800 Subject: [PATCH] =?UTF-8?q?improve:=E6=8F=92=E5=85=A5=E5=9B=BE=E7=89=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Ink Canvas/MainWindow.xaml | 6 ++ .../MainWindow_cs/MW_FloatingBarIcons.cs | 61 ++++++++++++++++++- Ink Canvas/MainWindow_cs/MW_Settings.cs | 7 +++ Ink Canvas/MainWindow_cs/MW_SettingsToLoad.cs | 1 + Ink Canvas/Resources/Settings.cs | 2 + 5 files changed, 76 insertions(+), 1 deletion(-) diff --git a/Ink Canvas/MainWindow.xaml b/Ink Canvas/MainWindow.xaml index 77edef3c..8ec2d9e0 100644 --- a/Ink Canvas/MainWindow.xaml +++ b/Ink Canvas/MainWindow.xaml @@ -765,6 +765,12 @@ FontFamily="Microsoft YaHei UI" FontWeight="Bold" Toggled="ToggleSwitchClearCanvasAndClearTimeMachine_Toggled" /> + + + + diff --git a/Ink Canvas/MainWindow_cs/MW_FloatingBarIcons.cs b/Ink Canvas/MainWindow_cs/MW_FloatingBarIcons.cs index ba8afe08..b0f505e8 100644 --- a/Ink Canvas/MainWindow_cs/MW_FloatingBarIcons.cs +++ b/Ink Canvas/MainWindow_cs/MW_FloatingBarIcons.cs @@ -23,6 +23,7 @@ using System.Text; using System.Globalization; using System.Windows.Data; using System.Xml.Linq; +using Image = System.Windows.Controls.Image; using MessageBox = iNKORE.UI.WPF.Modern.Controls.MessageBox; namespace Ink_Canvas { @@ -1989,7 +1990,65 @@ namespace Ink_Canvas { #endregion + /// + /// 创建并压缩图片的异步方法 + /// + private async Task CreateAndCompressImageAsync(string filePath) + { + string savePath = System.IO.Path.Combine(Settings.Automation.AutoSavedStrokesLocation, "File Dependency"); + if (!System.IO.Directory.Exists(savePath)) + System.IO.Directory.CreateDirectory(savePath); - + string fileExtension = System.IO.Path.GetExtension(filePath); + string timestamp = "img_" + DateTime.Now.ToString("yyyyMMdd_HH_mm_ss_fff"); + string newFilePath = System.IO.Path.Combine(savePath, timestamp + fileExtension); + + await Task.Run(() => System.IO.File.Copy(filePath, newFilePath, true)); + + return await Dispatcher.InvokeAsync(() => + { + var bitmapImage = new BitmapImage(); + bitmapImage.BeginInit(); + bitmapImage.UriSource = new Uri(newFilePath); + bitmapImage.CacheOption = BitmapCacheOption.OnLoad; + bitmapImage.EndInit(); + + int width = bitmapImage.PixelWidth; + int height = bitmapImage.PixelHeight; + + Image image = new Image(); + if (Settings.Canvas.IsCompressPicturesUploaded && (width > 1920 || height > 1080)) + { + double scaleX = 1920.0 / width; + double scaleY = 1080.0 / height; + double scale = Math.Min(scaleX, scaleY); + var transformedBitmap = new TransformedBitmap(bitmapImage, new ScaleTransform(scale, scale)); + image.Source = transformedBitmap; + image.Width = transformedBitmap.PixelWidth; + image.Height = transformedBitmap.PixelHeight; + } + else + { + image.Source = bitmapImage; + image.Width = width; + image.Height = height; + } + return image; + }); + } + + private async void InsertImage_MouseUp(object sender, MouseButtonEventArgs e) + { + var dialog = new Microsoft.Win32.OpenFileDialog + { + Filter = "图片文件|*.jpg;*.jpeg;*.png;*.bmp;*.gif" + }; + if (dialog.ShowDialog() == true) + { + var image = await CreateAndCompressImageAsync(dialog.FileName); + // TODO: 这里可以将image添加到画布或其他控件 + MessageBox.Show("图片已处理完成,可在此处插入到画布。"); + } + } } } diff --git a/Ink Canvas/MainWindow_cs/MW_Settings.cs b/Ink Canvas/MainWindow_cs/MW_Settings.cs index e888316f..81aa2336 100644 --- a/Ink Canvas/MainWindow_cs/MW_Settings.cs +++ b/Ink Canvas/MainWindow_cs/MW_Settings.cs @@ -2165,5 +2165,12 @@ namespace Ink_Canvas { Settings.PowerPointSettings.EnableWppProcessKill = ToggleSwitchEnableWppProcessKill.IsOn; SaveSettingsToFile(); } + + private void ToggleSwitchCompressPicturesUploaded_Toggled(object sender, RoutedEventArgs e) + { + if (!isLoaded) return; + Settings.Canvas.IsCompressPicturesUploaded = ToggleSwitchCompressPicturesUploaded.IsOn; + SaveSettingsToFile(); + } } } diff --git a/Ink Canvas/MainWindow_cs/MW_SettingsToLoad.cs b/Ink Canvas/MainWindow_cs/MW_SettingsToLoad.cs index 3637ffbd..f2550085 100644 --- a/Ink Canvas/MainWindow_cs/MW_SettingsToLoad.cs +++ b/Ink Canvas/MainWindow_cs/MW_SettingsToLoad.cs @@ -549,6 +549,7 @@ namespace Ink_Canvas { // 初始化直线端点吸附相关设置 ToggleSwitchLineEndpointSnapping.IsOn = Settings.Canvas.LineEndpointSnapping; + ToggleSwitchCompressPicturesUploaded.IsOn = Settings.Canvas.IsCompressPicturesUploaded; } else { Settings.Canvas = new Canvas(); } diff --git a/Ink Canvas/Resources/Settings.cs b/Ink Canvas/Resources/Settings.cs index 53976b30..b0b8a643 100644 --- a/Ink Canvas/Resources/Settings.cs +++ b/Ink Canvas/Resources/Settings.cs @@ -75,6 +75,8 @@ namespace Ink_Canvas [JsonProperty("hyperbolaAsymptoteOption")] public OptionalOperation HyperbolaAsymptoteOption { get; set; } = OptionalOperation.Ask; + [JsonProperty("isCompressPicturesUploaded")] + public bool IsCompressPicturesUploaded { get; set; } = true; } public enum OptionalOperation