Files
aistudio-wpf-diagram/AIStudio.Wpf.DiagramDesigner/Helpers/PointHelper.cs

45 lines
2.0 KiB
C#
Raw Normal View History

2023-01-12 23:02:53 +08:00
using AIStudio.Wpf.DiagramDesigner.Geometrys;
2021-07-23 09:42:22 +08:00
2022-10-28 22:45:39 +08:00
namespace AIStudio.Wpf.DiagramDesigner
2021-07-23 09:42:22 +08:00
{
public class PointHelper
{
2023-01-08 09:22:37 +08:00
public static PointBase GetPointForConnector(FullyCreatedConnectorInfo connector)
2021-07-23 09:42:22 +08:00
{
2023-01-08 09:22:37 +08:00
PointBase point = new PointBase();
if (connector == null)
{
return point;
}
2021-07-23 09:42:22 +08:00
if (connector.IsInnerPoint)
{
2023-01-15 20:27:39 +08:00
point = new PointBase(connector.DataItem.Left + connector.DataItem.ItemWidth * connector.XRatio - connector.ConnectorWidth / 2,
connector.DataItem.Top + connector.DataItem.ItemHeight * connector.YRatio - connector.ConnectorHeight / 2);
2021-07-23 09:42:22 +08:00
}
else
{
switch (connector.Orientation)
{
case ConnectorOrientation.Top:
2023-01-15 20:27:39 +08:00
point = new PointBase(connector.DataItem.Left + (connector.DataItem.ItemWidth / 2) - connector.ConnectorWidth / 2, connector.DataItem.Top - connector.ConnectorHeight / 2);
2021-07-23 09:42:22 +08:00
break;
case ConnectorOrientation.Bottom:
2023-01-15 20:27:39 +08:00
point = new PointBase(connector.DataItem.Left + (connector.DataItem.ItemWidth / 2) - connector.ConnectorWidth / 2, (connector.DataItem.Top + connector.DataItem.ItemHeight) - connector.ConnectorHeight / 2);
2021-07-23 09:42:22 +08:00
break;
case ConnectorOrientation.Right:
2023-01-15 20:27:39 +08:00
point = new PointBase(connector.DataItem.Left + connector.DataItem.ItemWidth - connector.ConnectorWidth / 2, connector.DataItem.Top + (connector.DataItem.ItemHeight / 2) - connector.ConnectorHeight / 2);
2021-07-23 09:42:22 +08:00
break;
case ConnectorOrientation.Left:
2023-01-15 20:27:39 +08:00
point = new PointBase(connector.DataItem.Left - connector.ConnectorWidth / 2, connector.DataItem.Top + (connector.DataItem.ItemHeight / 2) - connector.ConnectorHeight / 2);
2021-07-23 09:42:22 +08:00
break;
}
}
return point;
}
}
}