我希望创建一个自定义面板或控件来创建一种非常特殊的项目。
基本上,目的是拥有一个控件,你可以给出一个对象列表,它会将每个对象放入一个按钮。问题是按钮应该像圆环一样布置成圆形。与下图相似。
但现在想象一下,如果可以的话,每个彩色部分都是一个按钮。它们也具有按钮的所有功能,如鼠标悬停和事件。
因此,问题首当其冲: 我应该采用什么样的技术来创造这种控制? 有没有办法在按钮上进行某种“曲率”变换?
我真的好像在寻找两件事,对吧?
我的意思是,我可以将列表中的每个项目放入一个ItemsControl,其中有一个按钮作为其ItemTemplate。所以我只需要两件事:
第一个是径向布局面板(我见过其中的一些)。
第二种方法是让每个按钮都有某种旋转和曲率变换。
有什么想法吗?
答案 0 :(得分:4)
我认为您正在考虑三个不同的步骤:
Panel
,围绕一个圆圈布置儿童。重要的是,面板必须更新其子节点上的只读附加依赖项属性,告诉它们它们的布局位置(以度为单位的起始位置和以度为单位的结束位置)Button
模板,根据某些起点和终点呈现弧形。答案 1 :(得分:0)
解决我们遇到的同样问题的另一种方法(虽然类似)是使用面板将每个“按钮”堆叠在一起。每个按钮的形状基于2个假想圆的计算,内在和外在。然后它们被x,y坐标偏移到它们的正确位置,使得它们的原始位置成为甜甜圈的中心点。最难的部分显然是完成所有这些三角计算,但一旦完成它的简单旋转,扇形,扩展等形状你喜欢。