我想实现一个相当复杂的CurveEditor有支持像通常的要求:战略实施与XAML复杂的曲线编辑器/ WPF
- 自由伸缩和可移动轴每曲线
- 不同的插补方式点(线性,三次,样条)
- 切线(加入和碎)
- 选择一个或几个点进行编辑(移动,缩放,删除),通过围栏或点击
- 仅显示一个处理第二选定曲线亮点指出
我不想操纵实际WPF曲线,但与键/值/切线套现有模型和样品从我们的实现曲线的精确形状。
我已经收集了一些实现自定义用户控件和模板的经验。但我想确保,我不会错过任何明显的解决方案。我计划让这个一般XAML树:
- CurveEditor - 窗口保存所有内容
- MainThumb:允许在拖动和缩放编辑器范围
- X轴:用户控件撕心裂肺一些在左侧的比例尺
- YAxis:UserControl在底部显示一些比例 条
- 曲线:帆布保持曲线
- 曲线:用户控件用于单个曲线
- CurveName - 曲线的标签
- CurveLine - DrawingVisual,将呈现实际曲线通过对样条函数的内部实现进行采样。
- CurveEditPoints - 帆布保存所有编辑点
- CurveEditPoint - 用户控件的一个编辑点
- LeftTangent - 用户控件左切处理
- LeftTangentThumb - 用于修改手柄
- RightTangent - 用户控件的右切线处理
- RightTangentThumb - 修改手柄
- LeftTangent - 用户控件左切处理
- CurvePointCenter - 实际点的可视化,选择状态和插值类型。
- CurvePointThumb - 拇指选择和周围
- CurveEditPoint - 用户控件的一个编辑点
- 曲线:用户控件用于单个曲线
我知道拖动点,这是一个相当复杂的问题,我不要求实际执行。我感兴趣的是以下几个问题:
- 你能推荐任何教程或书籍,可以帮助我(我已经得到了画报WPF,WPF控件开发如虎添翼,和其他几个)
- 应该微量元素像切线是单独的用户控件?
- 什么容器最适合托管个人“曲线”,“EditPoints”和“切线”。现在,我使用Canvas和Canvas.SetLeft/SetTop来定位孩子,但是感觉“奇怪”。
- 我应该使用“形状”像Path或DrawingVisual-Classes来实现实际表示。路径很简单,但我关心的是数百个CurvePoints的性能。
- 我应该使用变换来旋转切线,还是可以在文件后面的代码中做一些三角测量运算?
- 这个结构是否有意义,还是你提出了一个完全不同的方法?
我不能说技术细节,但只是基于你提供的细节 - 以及你已经给出的想法 - 我想说你应该开始,看看你最终结束了。你可以开始“真正的”,并在精神上为重做做好准备,或者做一些概念证明/尖峰来巩固“承诺”之前的一些细节。 – 2011-03-14 01:30:03
谢谢。我知道,学习WPF的唯一方法就是通过做。但我已经了解到,与WPF相比,有更多方法可以做到“错误”,而不是更小,更快,更易维护的预期解决方案,但是(这是我的问题的原因)需要我从来没有听说过的WPF功能。 所以我已经想通了,将曲线作为ListBox和KeyPoints作为具有特殊控制模板的Items实现可能会更好。这听起来像是会为我处理诸如选择和虚拟化之类的事情。 – pixtur 2011-03-14 07:56:25