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