Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 画布控件编辑_C#_Windows Runtime_Winrt Xaml - Fatal编程技术网

C# 画布控件编辑

C# 画布控件编辑,c#,windows-runtime,winrt-xaml,C#,Windows Runtime,Winrt Xaml,我需要创建一个控件,允许用户在画布控件内操纵(重新定位、旋转)形状(小部件?)。形状可以变化:三角形、正方形、甚至几何路径,在画布中可能有数千个 形状的属性绑定到表示位置、旋转角度等的强类型类 我目前的想法是: 每个小部件形状都是它自己的控件(每个形状的行为都不同),尽管可以应用模板来改变表示。这也允许我根据形状上的有效操作来改变操作逻辑 这些控件被指定给画布控件(画布控件本身有一个图像作为背景),允许绝对定位 我假设控件的父控件将始终是画布(用于边界检查) 我是在正确的轨道上还是偏离了方向?有

我需要创建一个控件,允许用户在画布控件内操纵(重新定位、旋转)形状(小部件?)。形状可以变化:三角形、正方形、甚至几何路径,在画布中可能有数千个

形状的属性绑定到表示位置、旋转角度等的强类型类

我目前的想法是:

  • 每个小部件形状都是它自己的控件(每个形状的行为都不同),尽管可以应用模板来改变表示。这也允许我根据形状上的有效操作来改变操作逻辑
  • 这些控件被指定给画布控件(画布控件本身有一个图像作为背景),允许绝对定位
  • 我假设控件的父控件将始终是画布(用于边界检查)
  • 我是在正确的轨道上还是偏离了方向?有没有类似的样品(我试过看,但可能还不够)


    如果物品数量有可能达到数千件,我建议使用DirectX或Direct2D。如果您使用SharpDX或Win2D,您仍然可以使用C#,但XAML的性能不足以移动这么多元素。

    也就是说,如果您没有数千个项目,XAML应该可以。是吗?当然,如果你不同时移动它们的话,可能会有一些优化,甚至可以让你的数千个操作相当顺利。我可能很幸运,因为一次只对一个形状进行操作。没有必要同时移动它们。(也是因为我没有DirectX的经验,所以我喜欢使用XAML)。是否有类似的示例可用于jumpstart?您可以使用虚拟化,直到某个时候,您只需显示所有这些元素的渲染图像。当Windows 10问世时,将有一种机制来标记UI元素,以便在您需要它们之前,它们不会被引入到可视化树中。当然,这将有助于你的应用程序的初始性能,但一旦你发现所有3k项目,只要你翻译和缩放它们所在的容器,而不是indiv。你还是应该没事的。像这样的事情需要测试才能确定。