C# 使用Win2D绘制可编辑和可选择的形状?

C# 使用Win2D绘制可编辑和可选择的形状?,c#,uwp,win2d,C#,Uwp,Win2d,我以前使用过System.Windows.Shapes将Shapes添加到Canvas-控件中。 它们可以像对象一样使用,并且在编辑字段时视觉效果会发生变化。我还可以为点击等添加事件处理程序 通过使用Win2D,我需要这种功能。有什么简单的方法吗? 我正在尝试创建一个简单的应用程序,如下所示: 用户可以在画布上绘制形状 可以通过单击来选择和突出显示形状 可以操纵选定形状(颜色、不透明度、宽度、高度、位置等) 形状可以相互层叠(Z索引) 我想一种方法是使用Draw-方法创建自定义Shape类。

我以前使用过
System.Windows.Shapes
Shapes
添加到
Canvas
-控件中。 它们可以像对象一样使用,并且在编辑字段时视觉效果会发生变化。我还可以为点击等添加事件处理程序

通过使用
Win2D
,我需要这种功能。有什么简单的方法吗?

我正在尝试创建一个简单的应用程序,如下所示:

  • 用户可以在画布上绘制形状
  • 可以通过单击来选择和突出显示形状
  • 可以操纵选定形状(颜色、不透明度、宽度、高度、位置等)
  • 形状可以相互层叠(Z索引)
我想一种方法是使用
Draw
-方法创建自定义
Shape
类。然后,我只操纵对象,而更改将通过
Draw
-方法反映到视觉上。在每次画布失效时,将再次绘制对象


有什么想法吗?

Win2D可以帮助您进行命中测试。对于具有填充颜色的几何图形,请使用;对于仅具有轮廓/笔划的几何图形,请使用。使用这两种方法,您将获得准确的命中测试。对于非矩形形状(包括旋转矩形),使用边界是不精确的

对于z索引,则必须跟踪几何图形的顺序,并从上到下浏览列表,直到
指针点
命中某个对象


如果您的几何体列表太大,并且您注意到延迟,那么您可以首先使用边界开始命中测试,如果失败,则继续下一项,如果命中,然后使用上述方法获得准确的读数。

似乎我可以使用
CanvasTextLayout.LayoutBounds
CanvasGeometry.ComputeBounds
获得一些绘制对象的外部边界。使用它作为可点击区域可能是第一步,但它不是那么准确。它会选择一个线圆圈,当点击在空的中间-不仅仅是当点击线。用户可以在这些模式之间进行选择。