C# UWP Universal Windows 应用程序 - 调整形状大小

C# UWP Universal Windows App - Shape Resizing

我正在开发一个带有图形编辑器的应用程序。除了一些其他图形组件外,主要特征是一些形状(矩形、三角形、星形等)。我想做的是能够在双击后调整它们的大小,所以应该有一个容器显示可以拖动以调整形状的点。互联网上有很多很棒的教程,但主要针对矩形或其他 "packed" 到矩形视图框的形状。

问题是我需要将我的调整大小点精确地放在顶点上,因此例如我不能在矩形视框内有一个三角形,但我只需要三个点 - 每个顶点一个。这同样适用于其他形状,如星形和箭头,它们要复杂得多。

我的意思是:

所以我想我有两个办法。要么在双击后传递动态点列表并将它们显示为单独的形状,要么将它们与我的形状绑定在我的形状内 class,但我无法弄清楚如何将多个形状添加到视图框以便它们保持它们的形状能力。这是我的 classes 形状的简化片段:

 public class RectangleObject : ShapeObject
 {
    private Rectangle _rectangle;
    private Viewbox _viewbox;

    public RectangleObject(Color fillColor)
    {
        _rectangle = new Rectangle()
        {
            Fill = new SolidColorBrush(fillColor),
            Stretch = Stretch.Fill
        };

        _viewbox.child = _rectangle;
    }

    public void SetDimensions(){}

    //... and some other methods
 }

如果视图框可以包含我的形状和调整大小点,一个不错的解决方案,但我将不胜感激任何建议。我知道 canvas 会是一个更好的解决方案,但所有其他组件都打包在视图框中,因此由于继承会出现问题,并且需要进行许多更改。提前致谢!

是的,我很清楚你的意思。我以前用过 CorelDraw,然后用过 Adobe Illustrator,两者都有 形状变换 模式的概念(您的图像在右侧)以及 顶点编辑 模式(您的图像在左侧)。 UWP 类似于 WPF,WPF 有一个 adorners 的概念,你可以自定义它来做任何你想做的事情,包括我刚才描述的。

因此,当您进入其中一种模式时,不要修改现有形状以显示选择器;相反,您创建叠加在形状上的装饰器。这样一个人就不会破坏另一个人,并且您可以按照您的指示为每个人设置自定义行为。

另见