画板基础基本完成

This commit is contained in:
艾竹
2023-05-14 00:31:25 +08:00
parent 147a84cf91
commit 8003cebf99
40 changed files with 3198 additions and 374 deletions

View File

@@ -50,7 +50,6 @@ namespace AIStudio.Wpf.DiagramDesigner
}
}
private DrawingDesignerItemViewModelBase _drawingDesignerItem;
public DrawingRubberbandAdorner(DesignerCanvas designerCanvas, Point dragStartPoint)
: base(designerCanvas)
@@ -72,7 +71,7 @@ namespace AIStudio.Wpf.DiagramDesigner
_rubberbandBrush = null;
_rubberbandPen = new Pen(new SolidColorBrush(Colors.Red) { Opacity = 0.5 }, _drawingDesignerItem.ColorViewModel.LineWidth);
}
else if (DrawMode >= DrawMode.ErasableLine && DrawMode <= DrawMode.ErasableDirectLine)
else if (DrawMode >= DrawMode.ColorPicker && DrawMode <= DrawMode.ErasableDirectLine)
{
if (DrawMode == DrawMode.ErasableLine)
{
@@ -98,9 +97,17 @@ namespace AIStudio.Wpf.DiagramDesigner
{
_drawingDesignerItem = new DirectLineDrawingDesignerItemViewModel(_viewModel, dragStartPoint, true);
}
else if (DrawMode == DrawMode.ErasableText)
{
_drawingDesignerItem = new TextDrawingDesignerItemViewModel(_viewModel, dragStartPoint, true);
}
else if (DrawMode == DrawMode.ColorPicker)
{
_drawingDesignerItem = new ColorPickerDrawingDesignerItemViewModel(_viewModel, dragStartPoint, true);
}
_rubberbandBrush = null;//ColorObject.ToBrush(_drawingDesignerItem.ColorViewModel.FillColor);
_rubberbandPen = new Pen(ColorObject.ToBrush(_drawingDesignerItem.ColorViewModel.LineColor), _drawingDesignerItem.ColorViewModel.LineWidth);
_rubberbandPen = new Pen(_drawingDesignerItem.ColorViewModel.LineColor.ToBrush(), _drawingDesignerItem.ColorViewModel.LineWidth);
_rubberbandPen.DashStyle = new DashStyle(StrokeDashArray.Dash[(int)_drawingDesignerItem.ColorViewModel.LineDashStyle], 1);
}
else if (DrawMode >= DrawMode.Line && DrawMode <= DrawMode.DirectLine)
@@ -130,15 +137,20 @@ namespace AIStudio.Wpf.DiagramDesigner
_drawingDesignerItem = new DirectLineDrawingDesignerItemViewModel(_viewModel, dragStartPoint, false);
}
_rubberbandBrush = ColorObject.ToBrush(_drawingDesignerItem.ColorViewModel.FillColor);
_rubberbandPen = new Pen(ColorObject.ToBrush(_drawingDesignerItem.ColorViewModel.LineColor), _drawingDesignerItem.ColorViewModel.LineWidth);
_rubberbandBrush = _drawingDesignerItem.ColorViewModel.FillColor.ToBrush();
_rubberbandPen = new Pen(_drawingDesignerItem.ColorViewModel.LineColor.ToBrush(), _drawingDesignerItem.ColorViewModel.LineWidth);
_rubberbandPen.DashStyle = new DashStyle(StrokeDashArray.Dash[(int)_drawingDesignerItem.ColorViewModel.LineDashStyle], 1);
}
if (_drawingDesignerItem == null)
{
}
}
protected override void OnMouseMove(System.Windows.Input.MouseEventArgs e)
{
if (_drawingDesignerItem.OnMouseMove(this, e) == true)
if (_drawingDesignerItem?.OnMouseMove(this, e) == true)
{
if (!this.IsMouseCaptured)
this.CaptureMouse();
@@ -155,7 +167,7 @@ namespace AIStudio.Wpf.DiagramDesigner
protected override void OnMouseUp(System.Windows.Input.MouseButtonEventArgs e)
{
if (_drawingDesignerItem.OnMouseUp(this, e) == false)
if (_drawingDesignerItem?.OnMouseUp(this, e) == false)
{
return;
}
@@ -168,17 +180,18 @@ namespace AIStudio.Wpf.DiagramDesigner
if (adornerLayer != null)
adornerLayer.Remove(this);
if (_drawingDesignerItem.IsFinish == true)
if (_drawingDesignerItem?.IsFinish == true)
{
_viewModel.AddItemCommand.Execute(_drawingDesignerItem);
}
this._service.DrawModeViewModel.ResetDrawMode();
e.Handled = true;
}
protected override void OnMouseDown(MouseButtonEventArgs e)
{
_drawingDesignerItem.OnMouseDown(this, e);
_drawingDesignerItem?.OnMouseDown(this, e);
e.Handled = true;
}
@@ -192,7 +205,7 @@ namespace AIStudio.Wpf.DiagramDesigner
// the ConnectionAdorner does.
dc.DrawRectangle(Brushes.Transparent, null, new Rect(RenderSize));
dc.DrawGeometry(_rubberbandBrush, _rubberbandPen, _drawingDesignerItem.Geometry);
dc.DrawGeometry(_rubberbandBrush, _rubberbandPen, _drawingDesignerItem?.Geometry);
}
}
}

View File

@@ -130,7 +130,7 @@ namespace AIStudio.Wpf.DiagramDesigner
Rect rubberBand = new Rect(startPoint.Value, endPoint.Value);
ItemsControl itemsControl = GetParent<ItemsControl>(typeof(ItemsControl), _designerCanvas);
foreach (SelectableDesignerItemViewModelBase item in vm.Items)
foreach (SelectableDesignerItemViewModelBase item in vm.Items.ToList())
{
if (item is SelectableDesignerItemViewModelBase)
{