我确实有一个应用程序,它处理在 WPF 画布上绘制一些线条和形状,并在绘制的线上添加许多点,比如 1000。
哪种设计模式适合 wpf 中这种高度广泛的画布绘图。
MVVM 是绘制线条和点绘图的更好方法吗?
非常感谢任何帮助/想法。
问候, Sreekesh NK
我确实有一个应用程序,它处理在 WPF 画布上绘制一些线条和形状,并在绘制的线上添加许多点,比如 1000。
哪种设计模式适合 wpf 中这种高度广泛的画布绘图。
MVVM 是绘制线条和点绘图的更好方法吗?
非常感谢任何帮助/想法。
问候, Sreekesh NK
形状和线条绘制是特定于 UI 的,因此在 MVVM 中,这将存在于视图中。
如果您要坚持线条和形状,那么可能会涉及模型和视图模型,但老实说设计模式似乎并没有出现在您的要求中。
MVVM、MVP、MVC——所有这些模式都是企业架构模式。他们关心您的解决方案层和组件的复合分解,将它们分开,以便可以对其进行测试和维护。
画布绘图并不真正属于特定的设计模式。当然你可以使用 MVVM,但我看不出这会影响你对绘图组件的具体实现。
以下是您可以考虑使用的设计的基本概述:
(我是 C++ 人,但我想你会明白的)
class ScreenBase
{
public:
// define abstract operations here, may consider different return types
// These may be Template Patterns depending
// if there is common stuff to all screens
virtual void drawLine(/* appropriate params here*/) = 0;
virtual void dragLine(/* appropriate params here*/) = 0;
virtual void deleteLine(/* appropriate params here*/) = 0;
// more common operations
// Use a Template pattern if there is common screen
// serialization stuff, else just define it as abstract
void serialize() {
// do common stuff here
doSynchronize();
// do more common stuff here
}
virtual void doSynchronize(/* appropriate params here*/) = 0;
...
private:
// store the drawing shapes here appropriately
};
class Screen1 : public ScreenBase
{
public:
// concrete operation implementations
virtual void drawLine(/* appropriate params here*/);
virtual void dragLine(/* appropriate params here*/);
virtual void deleteLine(/* appropriate params here*/);
virtual void doSerialize() { ... }
// concrete specifics here
};
// class Screen2 : public ScreenBase
// class Screen3 : public ScreenBase
// I dont know the Microsoft stuff, the shapes should be
// defined in WPF, So we wont need to define anything here.
您可以考虑使用 Stategy 设计模式,而不是实现序列化的 Screens,这将创建一个单独的序列化类或类层次结构并将其设置为 Screen(s) 上的属性
试试这个,然后随着你的进步,试着问更具体的问题