2025-08-19 19:43:02 +02:00
|
|
|
|
using Avalonia;
|
|
|
|
|
|
using Avalonia.Controls.Shapes;
|
|
|
|
|
|
using Avalonia.Media;
|
2024-08-30 16:37:40 +02:00
|
|
|
|
|
2024-05-25 18:58:51 +02:00
|
|
|
|
namespace MapControl
|
|
|
|
|
|
{
|
|
|
|
|
|
public partial class MapPath : Shape
|
|
|
|
|
|
{
|
2025-06-10 15:25:17 +02:00
|
|
|
|
public static readonly StyledProperty<Geometry> DataProperty = Path.DataProperty.AddOwner<MapPath>();
|
|
|
|
|
|
|
|
|
|
|
|
static MapPath()
|
2024-05-25 18:58:51 +02:00
|
|
|
|
{
|
2025-06-10 15:25:17 +02:00
|
|
|
|
DataProperty.Changed.AddClassHandler<MapPath, Geometry>((path, e) => path.UpdateData());
|
2024-05-25 18:58:51 +02:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public Geometry Data
|
|
|
|
|
|
{
|
|
|
|
|
|
get => GetValue(DataProperty);
|
|
|
|
|
|
set => SetValue(DataProperty, value);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
protected override Geometry CreateDefiningGeometry() => Data;
|
|
|
|
|
|
|
|
|
|
|
|
private void SetMapTransform(Matrix matrix)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (Data.Transform is MatrixTransform transform)
|
|
|
|
|
|
{
|
|
|
|
|
|
transform.Matrix = matrix;
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
Data.Transform = new MatrixTransform(matrix);
|
|
|
|
|
|
}
|
2024-05-25 19:35:26 +02:00
|
|
|
|
|
|
|
|
|
|
InvalidateVisual();
|
2024-05-25 18:58:51 +02:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|