mirror of
https://gitee.com/langsisi_admin/serein-flow
synced 2026-03-03 00:00:49 +08:00
再次优化了画布的移动
This commit is contained in:
@@ -19,6 +19,7 @@ using System.Windows.Media;
|
||||
using System.Windows.Media.Animation;
|
||||
using System.Windows.Media.Media3D;
|
||||
using System.Windows.Shapes;
|
||||
using System.Xml.Linq;
|
||||
using DataObject = System.Windows.DataObject;
|
||||
|
||||
namespace Serein.WorkBench
|
||||
@@ -202,8 +203,11 @@ namespace Serein.WorkBench
|
||||
private bool IsDragging;
|
||||
private bool IsCanvasDragging;
|
||||
private Point startMousePosition;
|
||||
private TranslateTransform transform;
|
||||
private TranslateTransform transform1;
|
||||
|
||||
private TransformGroup canvasTransformGroup;
|
||||
private ScaleTransform scaleTransform;
|
||||
private TranslateTransform translateTransform;
|
||||
|
||||
|
||||
|
||||
@@ -218,8 +222,18 @@ namespace Serein.WorkBench
|
||||
var logTextWriter = new LogTextWriter(WriteLog);
|
||||
Console.SetOut(logTextWriter);
|
||||
|
||||
transform = new TranslateTransform();
|
||||
FlowChartCanvas.RenderTransform = transform;
|
||||
//transform = new TranslateTransform();
|
||||
//FlowChartCanvas.RenderTransform = transform;
|
||||
|
||||
canvasTransformGroup = new TransformGroup();
|
||||
scaleTransform = new ScaleTransform();
|
||||
translateTransform = new TranslateTransform();
|
||||
|
||||
canvasTransformGroup.Children.Add(scaleTransform);
|
||||
canvasTransformGroup.Children.Add(translateTransform);
|
||||
|
||||
FlowChartCanvas.RenderTransform = canvasTransformGroup;
|
||||
FlowChartCanvas.RenderTransformOrigin = new Point(0.5, 0.5);
|
||||
}
|
||||
|
||||
private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
|
||||
@@ -1306,24 +1320,8 @@ namespace Serein.WorkBench
|
||||
if (Keyboard.IsKeyDown(Key.LeftCtrl) || Keyboard.IsKeyDown(Key.RightCtrl))
|
||||
{
|
||||
double scale = e.Delta > 0 ? 1.1 : 0.9;
|
||||
|
||||
foreach (UIElement element in FlowChartCanvas.Children)
|
||||
{
|
||||
element.RenderTransformOrigin = new Point(0.5, 0.5);
|
||||
var transform = element.RenderTransform as ScaleTransform;
|
||||
if (transform == null)
|
||||
{
|
||||
transform = new ScaleTransform();
|
||||
element.RenderTransform = transform;
|
||||
}
|
||||
transform.ScaleX *= scale;
|
||||
transform.ScaleY *= scale;
|
||||
}
|
||||
|
||||
foreach (var line in connections)
|
||||
{
|
||||
line.Refresh();
|
||||
}
|
||||
scaleTransform.ScaleX *= scale;
|
||||
scaleTransform.ScaleY *= scale;
|
||||
}
|
||||
}
|
||||
private void AdjustCanvasSizeAndContent(double deltaX, double deltaY)
|
||||
@@ -1339,7 +1337,7 @@ namespace Serein.WorkBench
|
||||
{
|
||||
double offsetX = transformedBounds.Left;
|
||||
myCanvas.Width += offsetX;
|
||||
transform.X -= offsetX;
|
||||
translateTransform.X -= offsetX;
|
||||
|
||||
// 移动所有控件的位置
|
||||
foreach (UIElement child in myCanvas.Children)
|
||||
@@ -1353,7 +1351,7 @@ namespace Serein.WorkBench
|
||||
{
|
||||
double offsetY = transformedBounds.Top;
|
||||
myCanvas.Height += offsetY;
|
||||
transform.Y -= offsetY;
|
||||
translateTransform.Y -= offsetY;
|
||||
|
||||
// 移动所有控件的位置
|
||||
foreach (UIElement child in myCanvas.Children)
|
||||
@@ -1408,13 +1406,12 @@ namespace Serein.WorkBench
|
||||
double deltaX = currentMousePosition.X - startMousePosition.X;
|
||||
double deltaY = currentMousePosition.Y - startMousePosition.Y;
|
||||
|
||||
transform.X += deltaX;
|
||||
transform.Y += deltaY;
|
||||
|
||||
translateTransform.X += deltaX;
|
||||
translateTransform.Y += deltaY;
|
||||
|
||||
startMousePosition = currentMousePosition;
|
||||
|
||||
// 调整画布大小和控件位置
|
||||
// Adjust canvas size and content if necessary
|
||||
AdjustCanvasSizeAndContent(deltaX, deltaY);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user