From bbb5809790dbefc4ed7f365d13c62bc83ebe26b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=89=BE=E7=AB=B9?= Date: Thu, 8 Feb 2024 23:00:50 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BC=A9=E7=95=A5=E5=9B=BE=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ViewModels/MindViewModel.cs | 2 +- .../ViewModels/PageViewModel.cs | 7 ++++--- .../Views/ToolBoxControl.xaml | 2 +- .../Controls/DesignerCanvas.cs | 6 +++--- .../Helpers/BitmapHelper.cs | 5 ++++- .../Models/Serializables/DiagramItem.cs | 2 +- .../BaseViewModel/DiagramViewModel.cs | 20 ++++++++++++++----- .../ViewModels/Interface/IDiagramViewModel.cs | 4 ++++ 8 files changed, 33 insertions(+), 15 deletions(-) diff --git a/AIStudio.Wpf.DiagramApp/ViewModels/MindViewModel.cs b/AIStudio.Wpf.DiagramApp/ViewModels/MindViewModel.cs index 4695b61..127b480 100644 --- a/AIStudio.Wpf.DiagramApp/ViewModels/MindViewModel.cs +++ b/AIStudio.Wpf.DiagramApp/ViewModels/MindViewModel.cs @@ -114,7 +114,7 @@ namespace AIStudio.Wpf.DiagramApp.ViewModels protected override DiagramViewModel GetDiagramViewModel(string name, DiagramType diagramType, bool initNew) { - var viewmodel = new MindDiagramViewModel() { Name = name ?? NewNameHelper.GetNewName(DiagramViewModels.Select(p => p.Name), "页-"), DiagramType = diagramType, MindType = MindType, MindTheme = MindTheme }; + var viewmodel = new MindDiagramViewModel() { Name = name ?? NewNameHelper.GetNewName(DiagramViewModels.Select(p => p.Name), "页-"), DiagramType = diagramType, MindType = MindType, MindTheme = MindTheme, GenerateThumbnail = true }; viewmodel.Init(initNew); return viewmodel; diff --git a/AIStudio.Wpf.DiagramApp/ViewModels/PageViewModel.cs b/AIStudio.Wpf.DiagramApp/ViewModels/PageViewModel.cs index e3168d3..3e6063b 100644 --- a/AIStudio.Wpf.DiagramApp/ViewModels/PageViewModel.cs +++ b/AIStudio.Wpf.DiagramApp/ViewModels/PageViewModel.cs @@ -188,6 +188,7 @@ namespace AIStudio.Wpf.DiagramApp.ViewModels if (_diagramViewModel != null) { _diagramViewModel.PropertyChanged += DiagramViewModel_PropertyChanged; + } } } @@ -467,12 +468,12 @@ namespace AIStudio.Wpf.DiagramApp.ViewModels protected virtual DiagramViewModel GetDiagramViewModel(DiagramItem diagramItem, string ext) { - return new BlockDiagramViewModel(diagramItem, ext); + return new BlockDiagramViewModel(diagramItem, ext) { GenerateThumbnail = true}; } protected virtual DiagramViewModel GetDiagramViewModel(string name, DiagramType diagramType, bool initNew) { - return new BlockDiagramViewModel() { Name = name ?? NewNameHelper.GetNewName(DiagramViewModels.Select(p => p.Name), "页-"), DiagramType = diagramType }; + return new BlockDiagramViewModel() { Name = name ?? NewNameHelper.GetNewName(DiagramViewModels.Select(p => p.Name), "页-"), DiagramType = diagramType,GenerateThumbnail = true }; } public void AddCopyPageExecuted(object para) @@ -483,7 +484,7 @@ namespace AIStudio.Wpf.DiagramApp.ViewModels DiagramItem diagramItem = new DiagramItem(viewModel); diagramItem.Name = NewNameHelper.GetNewName(DiagramViewModels.Select(p => p.Name), "页-"); - viewModel = GetDiagramViewModel(diagramItem, ".json"); + viewModel = GetDiagramViewModel(diagramItem, ".json"); DiagramViewModels.Add(viewModel); DiagramViewModel = viewModel; diff --git a/AIStudio.Wpf.DiagramApp/Views/ToolBoxControl.xaml b/AIStudio.Wpf.DiagramApp/Views/ToolBoxControl.xaml index 69ad5ae..63f70dc 100644 --- a/AIStudio.Wpf.DiagramApp/Views/ToolBoxControl.xaml +++ b/AIStudio.Wpf.DiagramApp/Views/ToolBoxControl.xaml @@ -524,7 +524,7 @@ - + diff --git a/AIStudio.Wpf.DiagramDesigner/Controls/DesignerCanvas.cs b/AIStudio.Wpf.DiagramDesigner/Controls/DesignerCanvas.cs index 44f2743..58e4c86 100644 --- a/AIStudio.Wpf.DiagramDesigner/Controls/DesignerCanvas.cs +++ b/AIStudio.Wpf.DiagramDesigner/Controls/DesignerCanvas.cs @@ -302,12 +302,12 @@ namespace AIStudio.Wpf.DiagramDesigner if (e.OldValue is IDiagramViewModel oldvalue) { - //var image = this.ToBitmap().ToBitmapSource(); - //oldvalue.Thumbnail = new ImageBrush(image) { Stretch = Stretch.Uniform }; + } if (e.NewValue is IDiagramViewModel newvalue) { - newvalue.Thumbnail = new VisualBrush(this) { Stretch = Stretch.Uniform }; + if (newvalue.GenerateThumbnail) + newvalue.Thumbnail = new VisualBrush(this) { Stretch = Stretch.Uniform }; } } diff --git a/AIStudio.Wpf.DiagramDesigner/Helpers/BitmapHelper.cs b/AIStudio.Wpf.DiagramDesigner/Helpers/BitmapHelper.cs index c137ff7..d9e86ab 100644 --- a/AIStudio.Wpf.DiagramDesigner/Helpers/BitmapHelper.cs +++ b/AIStudio.Wpf.DiagramDesigner/Helpers/BitmapHelper.cs @@ -126,7 +126,10 @@ namespace AIStudio.Wpf.DiagramDesigner { var bitmapImage = base64String.ToBitmapImage(width, height); - return new System.Windows.Media.ImageBrush(bitmapImage) { Stretch = System.Windows.Media.Stretch.Uniform }; + var brush = new System.Windows.Media.ImageBrush(bitmapImage) { Stretch = System.Windows.Media.Stretch.Uniform }; + //brush.SetCurrentValue(System.Windows.Media.RenderOptions.BitmapScalingModeProperty, System.Windows.Media.BitmapScalingMode.HighQuality); + + return brush; } catch { diff --git a/AIStudio.Wpf.DiagramDesigner/Models/Serializables/DiagramItem.cs b/AIStudio.Wpf.DiagramDesigner/Models/Serializables/DiagramItem.cs index 09b0b02..893c37a 100644 --- a/AIStudio.Wpf.DiagramDesigner/Models/Serializables/DiagramItem.cs +++ b/AIStudio.Wpf.DiagramDesigner/Models/Serializables/DiagramItem.cs @@ -34,7 +34,7 @@ namespace AIStudio.Wpf.DiagramDesigner PageBackground = diagramView.DiagramOption.LayoutOption.PageBackground; AllowDrop = diagramView.DiagramOption.LayoutOption.AllowDrop; - Thumbnail = diagramView.Thumbnail.ToBase64String(); + Thumbnail = diagramView.Thumbnail?.ToBase64String(); var selectedDesignerItems = diagramView.Items.OfType(); var selectedConnections = diagramView.Items.OfType(); diff --git a/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/DiagramViewModel.cs b/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/DiagramViewModel.cs index 7cf3831..147b9b5 100644 --- a/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/DiagramViewModel.cs +++ b/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/DiagramViewModel.cs @@ -346,6 +346,11 @@ namespace AIStudio.Wpf.DiagramDesigner } } + public bool GenerateThumbnail + { + get;set; + } + public bool ShowMenuOptions { get @@ -873,7 +878,7 @@ namespace AIStudio.Wpf.DiagramDesigner DiagramOption.LayoutOption.PageBackground = diagramItem.PageBackground; DiagramOption.LayoutOption.AllowDrop = diagramItem.AllowDrop; - Thumbnail = diagramItem.Thumbnail.ToBrush((int)DiagramOption.LayoutOption.PageSize.Width / 4, (int)DiagramOption.LayoutOption.PageSize.Height / 4); + Thumbnail = diagramItem.Thumbnail?.ToBrush((int)DiagramOption.LayoutOption.PageSize.Width, (int)DiagramOption.LayoutOption.PageSize.Height); Init(true); } @@ -1025,11 +1030,16 @@ namespace AIStudio.Wpf.DiagramDesigner public void SaveThumbnail() { - if (Thumbnail is VisualBrush visualBrush) + if (GenerateThumbnail) { - var size = ((UIElement)visualBrush.Visual).DesiredSize; - var image = visualBrush.ToBitmap(new Rect(size)).ToBitmapSource((int)size.Width / 4, (int)size.Height / 4); - Thumbnail = new ImageBrush(image) { Stretch = Stretch.Uniform }; + if (Thumbnail is VisualBrush visualBrush) + { + var size = ((UIElement)visualBrush.Visual).DesiredSize; + var image = visualBrush.ToBitmap(new Rect(size)).ToBitmapSource((int)size.Width, (int)size.Height); + var brush = new ImageBrush(image) { Stretch = Stretch.Uniform }; + //brush.SetCurrentValue(RenderOptions.BitmapScalingModeProperty, BitmapScalingMode.HighQuality); + Thumbnail = brush; + } } } diff --git a/AIStudio.Wpf.DiagramDesigner/ViewModels/Interface/IDiagramViewModel.cs b/AIStudio.Wpf.DiagramDesigner/ViewModels/Interface/IDiagramViewModel.cs index 6c084f7..6cdf6fd 100644 --- a/AIStudio.Wpf.DiagramDesigner/ViewModels/Interface/IDiagramViewModel.cs +++ b/AIStudio.Wpf.DiagramDesigner/ViewModels/Interface/IDiagramViewModel.cs @@ -294,6 +294,10 @@ namespace AIStudio.Wpf.DiagramDesigner { get; set; } + bool GenerateThumbnail + { + get; set; + } #region 如果这个赋值了,优先用这个的 IDrawModeViewModel DrawModeViewModel {