mirror of
https://gitee.com/akwkevin/aistudio.-wpf.-diagram
synced 2026-03-03 00:00:57 +08:00
group 和 line 优化
This commit is contained in:
@@ -778,7 +778,7 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
private void Add(SelectableDesignerItemViewModelBase item)
|
||||
{
|
||||
item.Root = this;
|
||||
item.ZIndex = Items.Count;
|
||||
item.ZIndex = Items.Any() ? Items.Max(p => p.ZIndex) + 1 : 0;
|
||||
if (item.Id == Guid.Empty)
|
||||
{
|
||||
item.Id = Guid.NewGuid();
|
||||
@@ -1690,24 +1690,20 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
return;
|
||||
}
|
||||
|
||||
RectangleBase rect = GetBoundingRectangle(items);
|
||||
RectangleBase rect = DiagramViewModelHelper.GetBoundingRectangle(items);
|
||||
|
||||
if (groupItem == null)
|
||||
{
|
||||
groupItem = new GroupDesignerItemViewModel();
|
||||
}
|
||||
groupItem.IsGroup = true;
|
||||
groupItem.ItemWidth = rect.Width;
|
||||
groupItem.ItemHeight = rect.Height;
|
||||
groupItem.Left = rect.Left;
|
||||
groupItem.Top = rect.Top;
|
||||
groupItem.ZIndex = Items.Count;
|
||||
|
||||
DirectAddItemCommand.Execute(groupItem);
|
||||
|
||||
foreach (DesignerItemViewModelBase item in items)
|
||||
item.ParentId = groupItem.Id;
|
||||
|
||||
groupItem.Resize();
|
||||
|
||||
ClearSelectedItemsCommand.Execute(null);
|
||||
//groupItem.IsSelected = true;
|
||||
SelectionService.AddToSelection(groupItem);
|
||||
@@ -1826,25 +1822,6 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
|
||||
}
|
||||
|
||||
public RectangleBase GetBoundingRectangle(IEnumerable<DesignerItemViewModelBase> items)
|
||||
{
|
||||
double x1 = Double.MaxValue;
|
||||
double y1 = Double.MaxValue;
|
||||
double x2 = Double.MinValue;
|
||||
double y2 = Double.MinValue;
|
||||
|
||||
foreach (DesignerItemViewModelBase item in items)
|
||||
{
|
||||
x1 = Math.Min(item.Left, x1);
|
||||
y1 = Math.Min(item.Top, y1);
|
||||
|
||||
x2 = Math.Max(item.Left + item.ItemWidth, x2);
|
||||
y2 = Math.Max(item.Top + item.ItemHeight, y2);
|
||||
}
|
||||
|
||||
return new RectangleBase(new PointBase(x1, y1), new PointBase(x2, y2));
|
||||
}
|
||||
|
||||
#region 用于wpf大小与物理像素之间转换
|
||||
public void SetScreenScale()
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user