diff --git a/AIStudio.Wpf.DiagramApp/Views/MainWindow.xaml b/AIStudio.Wpf.DiagramApp/Views/MainWindow.xaml
index 8940371..108400f 100644
--- a/AIStudio.Wpf.DiagramApp/Views/MainWindow.xaml
+++ b/AIStudio.Wpf.DiagramApp/Views/MainWindow.xaml
@@ -1900,6 +1900,7 @@
Width="180"
HorizontalAlignment="Right"
VerticalAlignment="Bottom"
+ OffSet="True"
DesignerCanvas="{Binding ElementName=diagram}"
MaximumZoomValue="{Binding MaximumZoomValue,Mode=TwoWay}"
MinimumZoomValue="{Binding MinimumZoomValue,Mode=TwoWay}"
diff --git a/AIStudio.Wpf.DiagramDesigner.Demo/ViewModels/ZoomViewModel.cs b/AIStudio.Wpf.DiagramDesigner.Demo/ViewModels/ZoomViewModel.cs
index 4b0b508..3837487 100644
--- a/AIStudio.Wpf.DiagramDesigner.Demo/ViewModels/ZoomViewModel.cs
+++ b/AIStudio.Wpf.DiagramDesigner.Demo/ViewModels/ZoomViewModel.cs
@@ -13,10 +13,9 @@ namespace AIStudio.Wpf.DiagramDesigner.Demo.ViewModels
Info = "Drag the upper-right scroll bar to make the canvas larger and smaller.";
DiagramViewModel = new DiagramViewModel();
- DiagramViewModel.PageSizeType = PageSizeType.Custom;
- DiagramViewModel.PageSize = new Size(double.NaN, double.NaN);
DiagramViewModel.ColorViewModel = new ColorViewModel();
DiagramViewModel.ColorViewModel.FillColor.Color = System.Windows.Media.Colors.Orange;
+ DiagramViewModel.DefaultZoomBox = true;
DefaultDesignerItemViewModel node1 = new DefaultDesignerItemViewModel(DiagramViewModel) { Left = 50, Top = 50, Text = "1" };
DiagramViewModel.DirectAddItemCommand.Execute(node1);
diff --git a/AIStudio.Wpf.DiagramDesigner.Demo/Views/ZoomView.xaml b/AIStudio.Wpf.DiagramDesigner.Demo/Views/ZoomView.xaml
index 61db525..acce3fe 100644
--- a/AIStudio.Wpf.DiagramDesigner.Demo/Views/ZoomView.xaml
+++ b/AIStudio.Wpf.DiagramDesigner.Demo/Views/ZoomView.xaml
@@ -11,19 +11,6 @@
-
-
diff --git a/AIStudio.Wpf.DiagramDesigner/Controls/ZoomBox.cs b/AIStudio.Wpf.DiagramDesigner/Controls/ZoomBox.cs
index 05c5902..32788f5 100644
--- a/AIStudio.Wpf.DiagramDesigner/Controls/ZoomBox.cs
+++ b/AIStudio.Wpf.DiagramDesigner/Controls/ZoomBox.cs
@@ -80,6 +80,20 @@ namespace AIStudio.Wpf.DiagramDesigner
#endregion
+ public static readonly DependencyProperty OffSetProperty =
+ DependencyProperty.Register(nameof(OffSet), typeof(bool), typeof(ZoomBox), new UIPropertyMetadata(false));
+ public bool OffSet
+ {
+ get
+ {
+ return (bool)GetValue(OffSetProperty);
+ }
+ set
+ {
+ SetValue(OffSetProperty, value);
+ }
+ }
+
public static readonly DependencyProperty ZoomValueProperty =
DependencyProperty.Register(nameof(ZoomValue), typeof(double), typeof(ZoomBox), new UIPropertyMetadata(1d));
public double ZoomValue
@@ -200,18 +214,36 @@ namespace AIStudio.Wpf.DiagramDesigner
private void InvalidateScale(out double scale, out double xOffset, out double yOffset)
{
- Vector vector = System.Windows.Media.VisualTreeHelper.GetOffset(DesignerCanvas);
- double w = DesignerCanvas.ActualWidth + vector.X * 2;
- double h = DesignerCanvas.ActualHeight + vector.Y * 2;
+ if (OffSet)
+ {
+ Vector vector = System.Windows.Media.VisualTreeHelper.GetOffset(DesignerCanvas);
+ double w = DesignerCanvas.ActualWidth + vector.X * 2;
+ double h = DesignerCanvas.ActualHeight + vector.Y * 2;
- // zoom canvas size
- double x = this.zoomCanvas.ActualWidth;
- double y = this.zoomCanvas.ActualHeight;
- double scaleX = x / w;
- double scaleY = y / h;
- scale = (scaleX < scaleY) ? scaleX : scaleY;
- xOffset = (x - scale * w) / 2;
- yOffset = (y - scale * h) / 2;
+ // zoom canvas size
+ double x = this.zoomCanvas.ActualWidth;
+ double y = this.zoomCanvas.ActualHeight;
+ double scaleX = x / w;
+ double scaleY = y / h;
+ scale = (scaleX < scaleY) ? scaleX : scaleY;
+ xOffset = (x - scale * w) / 2;
+ yOffset = (y - scale * h) / 2;
+ }
+ else
+ {
+ double w = DesignerCanvas.ActualWidth;
+ double h = DesignerCanvas.ActualHeight;
+
+ // zoom canvas size
+ double x = this.zoomCanvas.ActualWidth;
+ double y = this.zoomCanvas.ActualHeight;
+ double scaleX = x / w;
+ double scaleY = y / h;
+ scale = (scaleX < scaleY) ? scaleX : scaleY;
+ xOffset = (x - scale * w) / 2;
+ yOffset = (y - scale * h) / 2;
+ }
+
}
}
}
diff --git a/AIStudio.Wpf.DiagramDesigner/UserControls/DiagramControl.xaml b/AIStudio.Wpf.DiagramDesigner/UserControls/DiagramControl.xaml
index 4bfa3a5..4441b6d 100644
--- a/AIStudio.Wpf.DiagramDesigner/UserControls/DiagramControl.xaml
+++ b/AIStudio.Wpf.DiagramDesigner/UserControls/DiagramControl.xaml
@@ -25,7 +25,7 @@
-
+
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
-
-
+
-
-
-
-
+
+
+
+
-
-
-
+
+
-
-
+
-
-
-
-
-
+
+
+
+
+
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
+
+
-
-
-
+
+
-
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
-
-
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
+
+
+
+
+
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
+
+
+
+
-
-
+
+
+
+
+
+
+
+
+
+
-
-
-
+
+
+
+
+
+
+
diff --git a/AIStudio.Wpf.DiagramDesigner/UserControls/DiagramControl.xaml.cs b/AIStudio.Wpf.DiagramDesigner/UserControls/DiagramControl.xaml.cs
index ed76903..244d7bc 100644
--- a/AIStudio.Wpf.DiagramDesigner/UserControls/DiagramControl.xaml.cs
+++ b/AIStudio.Wpf.DiagramDesigner/UserControls/DiagramControl.xaml.cs
@@ -56,25 +56,6 @@ namespace AIStudio.Wpf.DiagramDesigner
}
}
- public static readonly DependencyProperty ZoomValueProperty = DependencyProperty.Register(nameof(ZoomValue), typeof(double), typeof(DiagramControl), new UIPropertyMetadata(1d));
- public double ZoomValue
- {
- get
- {
- return (double)GetValue(ZoomValueProperty);
- }
- set
- {
- SetValue(ZoomValueProperty, value);
- }
- }
-
- private void DesignerCanvas_Loaded(object sender, RoutedEventArgs e)
- {
- //DesignerCanvas myDesignerCanvas = sender as DesignerCanvas;
- //zoomBox.DesignerCanvas = myDesignerCanvas;
- }
-
private IDiagramViewModel DiagramViewModel
{
get
diff --git a/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/DiagramViewModel.cs b/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/DiagramViewModel.cs
index 425656d..21b82f1 100644
--- a/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/DiagramViewModel.cs
+++ b/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/DiagramViewModel.cs
@@ -428,6 +428,19 @@ namespace AIStudio.Wpf.DiagramDesigner
}
}
+ private bool _defaultZoomBox;
+ public bool DefaultZoomBox
+ {
+ get
+ {
+ return _defaultZoomBox;
+ }
+ set
+ {
+ SetProperty(ref _defaultZoomBox, value);
+ }
+ }
+
private double _delayZoomValue = 1;
[Browsable(false)]
public double DelayZoomValue
diff --git a/AIStudio.Wpf.DiagramDesigner/ViewModels/IDiagramViewModel.cs b/AIStudio.Wpf.DiagramDesigner/ViewModels/IDiagramViewModel.cs
index 1ef133f..e76f694 100644
--- a/AIStudio.Wpf.DiagramDesigner/ViewModels/IDiagramViewModel.cs
+++ b/AIStudio.Wpf.DiagramDesigner/ViewModels/IDiagramViewModel.cs
@@ -265,6 +265,10 @@ namespace AIStudio.Wpf.DiagramDesigner
{
get; set;
}
+ bool DefaultZoomBox
+ {
+ get; set;
+ }
bool AllowDrop
{
get; set;