Workbench项目中,优化了节点的复制、粘贴,加载。

This commit is contained in:
fengjiayi
2024-12-14 23:46:37 +08:00
parent c5e2abea96
commit 8d0258ebea
17 changed files with 396 additions and 298 deletions

View File

@@ -15,7 +15,21 @@ using System.Threading;
namespace Serein.Workbench.Node.View
{
internal static class MyUIFunc
{
public static Pen CreateAndFreezePen()
{
// 创建Pen
Pen pen = new Pen(Brushes.Black, 1);
// 冻结Pen
if (pen.CanFreeze)
{
pen.Freeze();
}
return pen;
}
}
public class ParamsArgControl: Shape
{
@@ -27,8 +41,6 @@ namespace Serein.Workbench.Node.View
this.MouseMove += ParamsArgControl_MouseMove;
this.MouseLeave += ParamsArgControl_MouseLeave;
AddOrRemoveParamsTask = AddAsync;
}
@@ -84,9 +96,9 @@ namespace Serein.Workbench.Node.View
// 圆形部分
var ellipse = new EllipseGeometry(circlePoint, connectorSize / 2, connectorSize / 2);
drawingContext.DrawGeometry(brush, new Pen(Brushes.Black, 1), ellipse);
drawingContext.DrawGeometry(brush, MyUIFunc.CreateAndFreezePen(), ellipse);
}
private bool isMouseOver; // 鼠标悬停状态

View File

@@ -50,7 +50,7 @@ namespace Serein.Workbench.Node.View
// 绘制连接器的圆形部分
var ellipse = new EllipseGeometry(circlePoint, connectorSize / 2, connectorSize / 2);
drawingContext.DrawGeometry(background, new Pen(Brushes.Black, 1), ellipse);
drawingContext.DrawGeometry(background, MyUIFunc.CreateAndFreezePen(), ellipse);
// 定义三角形的间距
double triangleOffsetX = 4; // 三角形与圆形的间距
@@ -66,7 +66,7 @@ namespace Serein.Workbench.Node.View
context.LineTo(new Point(triangleCenterX, triangleCenterY + 4.5), true, false);
context.LineTo(new Point(triangleCenterX, triangleCenterY - 4.5), true, false);
}
drawingContext.DrawGeometry(background, new Pen(Brushes.Black, 1), pathGeometry);
drawingContext.DrawGeometry(background, MyUIFunc.CreateAndFreezePen(), pathGeometry);
}
}

View File

@@ -46,7 +46,7 @@ namespace Serein.Workbench.Node.View
var ellipse = new EllipseGeometry(circlePoint, connectorSize / 2, connectorSize / 2);
drawingContext.DrawGeometry(background, new Pen(Brushes.Black, 1), ellipse);
drawingContext.DrawGeometry(background, MyUIFunc.CreateAndFreezePen(), ellipse);
@@ -65,7 +65,7 @@ namespace Serein.Workbench.Node.View
context.LineTo(new Point(triangleCenterX, triangleCenterY + 4.5), true, false);
context.LineTo(new Point(triangleCenterX, triangleCenterY - 4.5), true, false);
}
drawingContext.DrawGeometry(background, new Pen(Brushes.Black, 1), pathGeometry);
drawingContext.DrawGeometry(background, MyUIFunc.CreateAndFreezePen(), pathGeometry);
// 绘制标签
//var formattedText = new FormattedText(

View File

@@ -34,7 +34,7 @@ namespace Serein.Workbench.Node.View
var circlePoint = new Point(circleCenterX, circleCenterY);
// 绘制连接器的圆形部分
var ellipse = new EllipseGeometry(circlePoint, connectorSize / 2, connectorSize / 2);
drawingContext.DrawGeometry(background, new Pen(Brushes.Black, 1), ellipse);
drawingContext.DrawGeometry(background, MyUIFunc.CreateAndFreezePen(), ellipse);
// 绘制连接器的圆形部分
//var ellipse = new EllipseGeometry(circlePoint, connectorSize / 2, connectorSize / 2);
@@ -54,7 +54,7 @@ namespace Serein.Workbench.Node.View
context.LineTo(new Point(triangleCenterX, triangleCenterY + 4.5), true, false);
context.LineTo(new Point(triangleCenterX, triangleCenterY - 4.5), true, false);
}
drawingContext.DrawGeometry(background, new Pen(Brushes.Black, 1), pathGeometry);
drawingContext.DrawGeometry(background, MyUIFunc.CreateAndFreezePen(), pathGeometry);
}
}
}

View File

@@ -39,7 +39,7 @@ namespace Serein.Workbench.Node.View
// 绘制连接器的圆形部分
var ellipse = new EllipseGeometry(circlePoint, connectorSize / 2, connectorSize / 2);
drawingContext.DrawGeometry(background, new Pen(Brushes.Black, 1), ellipse);
drawingContext.DrawGeometry(background, MyUIFunc.CreateAndFreezePen(), ellipse);
// 定义三角形的间距
double triangleOffsetX = 4; // 三角形与圆形的间距
@@ -55,7 +55,7 @@ namespace Serein.Workbench.Node.View
context.LineTo(new Point(triangleCenterX, triangleCenterY + 4.5), true, false);
context.LineTo(new Point(triangleCenterX, triangleCenterY - 4.5), true, false);
}
drawingContext.DrawGeometry(background, new Pen(Brushes.Black, 1), pathGeometry);
drawingContext.DrawGeometry(background, MyUIFunc.CreateAndFreezePen(), pathGeometry);
}
}
}