diff --git a/AIStudio.Wpf.DiagramDesigner/Converters/ClipConverter.cs b/AIStudio.Wpf.DiagramDesigner/Converters/ClipConverter.cs index 8c5aadd..dbb4482 100644 --- a/AIStudio.Wpf.DiagramDesigner/Converters/ClipConverter.cs +++ b/AIStudio.Wpf.DiagramDesigner/Converters/ClipConverter.cs @@ -16,8 +16,8 @@ namespace AIStudio.Wpf.DiagramDesigner { if (value is ImageItemViewModel imageItemViewModel) { - double xradio = imageItemViewModel.ItemWidth / imageItemViewModel.ImageWidth; - double yradio = imageItemViewModel.ItemHeight / imageItemViewModel.ImageHeight; + double xradio = imageItemViewModel.ImageWidth == 0 ? 0 : imageItemViewModel.ItemWidth / imageItemViewModel.ImageWidth; + double yradio = imageItemViewModel.ImageHeight == 0 ? 0 : imageItemViewModel.ItemHeight / imageItemViewModel.ImageHeight; if (para == "Clip") { if (imageItemViewModel.ClipMode == ClipMode.RectangleGeometry) @@ -29,7 +29,7 @@ namespace AIStudio.Wpf.DiagramDesigner } else { - rectangle.Rect = new System.Windows.Rect(imageItemViewModel.ResizeMargin.Left, imageItemViewModel.ResizeMargin.Top , imageItemViewModel.ItemWidth - (imageItemViewModel.ResizeMargin.Left + imageItemViewModel.ResizeMargin.Right), imageItemViewModel.ItemHeight - (imageItemViewModel.ResizeMargin.Top + imageItemViewModel.ResizeMargin.Bottom)); + rectangle.Rect = new System.Windows.Rect(imageItemViewModel.ResizeMargin.Left, imageItemViewModel.ResizeMargin.Top, imageItemViewModel.ItemWidth - (imageItemViewModel.ResizeMargin.Left + imageItemViewModel.ResizeMargin.Right), imageItemViewModel.ItemHeight - (imageItemViewModel.ResizeMargin.Top + imageItemViewModel.ResizeMargin.Bottom)); } return rectangle; } @@ -37,14 +37,14 @@ namespace AIStudio.Wpf.DiagramDesigner { EllipseGeometry ellipse = new EllipseGeometry(); if (imageItemViewModel.ResizeMode == false) - { + { ellipse.Center = new Point(imageItemViewModel.ResizeMargin.Left * xradio + imageItemViewModel.ItemWidth / 2, imageItemViewModel.ResizeMargin.Top * yradio + imageItemViewModel.ItemHeight / 2); ellipse.RadiusX = imageItemViewModel.ItemWidth / 2; ellipse.RadiusY = imageItemViewModel.ItemHeight / 2; } else { - ellipse.Center = new Point(imageItemViewModel.ResizeMargin.Left + (imageItemViewModel.ItemWidth - imageItemViewModel.ResizeMargin.Left - imageItemViewModel.ResizeMargin.Right) / 2, imageItemViewModel.ResizeMargin.Top + (imageItemViewModel.ItemHeight - imageItemViewModel.ResizeMargin.Top - imageItemViewModel.ResizeMargin.Bottom)/ 2); + ellipse.Center = new Point(imageItemViewModel.ResizeMargin.Left + (imageItemViewModel.ItemWidth - imageItemViewModel.ResizeMargin.Left - imageItemViewModel.ResizeMargin.Right) / 2, imageItemViewModel.ResizeMargin.Top + (imageItemViewModel.ItemHeight - imageItemViewModel.ResizeMargin.Top - imageItemViewModel.ResizeMargin.Bottom) / 2); ellipse.RadiusX = (imageItemViewModel.ItemWidth - imageItemViewModel.ResizeMargin.Left - imageItemViewModel.ResizeMargin.Right) / 2; ellipse.RadiusY = (imageItemViewModel.ItemHeight - imageItemViewModel.ResizeMargin.Top - imageItemViewModel.ResizeMargin.Bottom) / 2; } diff --git a/AIStudio.Wpf.DiagramDesigner/ViewModels/DefaultViewModel/ImageItemViewModel.cs b/AIStudio.Wpf.DiagramDesigner/ViewModels/DefaultViewModel/ImageItemViewModel.cs index c7b273f..08ec4cb 100644 --- a/AIStudio.Wpf.DiagramDesigner/ViewModels/DefaultViewModel/ImageItemViewModel.cs +++ b/AIStudio.Wpf.DiagramDesigner/ViewModels/DefaultViewModel/ImageItemViewModel.cs @@ -61,6 +61,7 @@ namespace AIStudio.Wpf.DiagramDesigner { this.Icon = designer.Icon; Suffix = Path.GetExtension(this.Icon).ToLower(); + InitWidthAndHeight(); } }