Macos 您如何开发一个应用程序来在Cocoa中绘制、编辑和保存UML模型?
单个UML图形状是NSView子类还是NSBezierPath?图表是如何创建和管理的?您看过OmniGraffle吗?它可以满足你的需要Macos 您如何开发一个应用程序来在Cocoa中绘制、编辑和保存UML模型?,macos,cocoa,Macos,Cocoa,单个UML图形状是NSView子类还是NSBezierPath?图表是如何创建和管理的?您看过OmniGraffle吗?它可以满足你的需要 [与编程无关的答案…]您看过OmniGraffle吗?它可以满足你的需要 [与编程无关的答案…]您看过/Developer/Examples/AppKit中的草图示例项目了吗?它至少能让你走到一半的地方。你看过/Developer/Examples/AppKit中的草图示例项目了吗?它至少能让您达到目标的一半。您通常从NSView子类开始,以表示您的“画布”
[与编程无关的答案…]您看过OmniGraffle吗?它可以满足你的需要
[与编程无关的答案…]您看过/Developer/Examples/AppKit中的草图示例项目了吗?它至少能让你走到一半的地方。你看过/Developer/Examples/AppKit中的草图示例项目了吗?它至少能让您达到目标的一半。您通常从NSView子类开始,以表示您的“画布”,并处理绘图和鼠标/键盘事件。您可能会在绘图方法中使用NSBezierPath来填充和勾勒形状。根据绘图代码的复杂程度,您可以将所有内容都放在NSView子类中,或者创建一个NSCell子类,以完成NSView的一些工作。在这两种情况下,您都希望定义一个数据源协议(或创建绑定),以便从数据模型中表示UML项的对象向NSView提供数据
核心动画也值得考虑,尽管我会从NSView开始,至少对于一个简单的原型来说是这样。通常会从NSView子类开始,以表示“画布”并处理绘图和鼠标/键盘事件。您可能会在绘图方法中使用NSBezierPath来填充和勾勒形状。根据绘图代码的复杂程度,您可以将所有内容都放在NSView子类中,或者创建一个NSCell子类,以完成NSView的一些工作。在这两种情况下,您都希望定义一个数据源协议(或创建绑定),以便从数据模型中表示UML项的对象向NSView提供数据
核心动画也值得考虑,尽管我会从NSView开始,至少对于一个简单的原型是这样的。一种方法是:
- 创建基于文档的应用程序
- 为最终用户能够在画布中绘制的不同对象设计模型类,所有对象共享一个抽象超类
- 在CanvasView类中,实现drawRect并让它调用NSDocument子类,或者对于更细粒度的类,调用它的viewcontroller,以获得所有应该按正确顺序绘制的对象,从而绘制它们
- 对于这些对象中的每一个,从CanvasView的drawRect:实现中调用drawInteriorInView:rect:方法或它们都已实现的类似方法
或者你当然可以看看,它似乎有一个相当实用的实现。特别是查看随附的示例应用程序。一种方法是:
- 创建基于文档的应用程序
- 为最终用户能够在画布中绘制的不同对象设计模型类,所有对象共享一个抽象超类
- 在CanvasView类中,实现drawRect并让它调用NSDocument子类,或者对于更细粒度的类,调用它的viewcontroller,以获得所有应该按正确顺序绘制的对象,从而绘制它们
- 对于这些对象中的每一个,从CanvasView的drawRect:实现中调用drawInteriorInView:rect:方法或它们都已实现的类似方法
或者你当然可以看看,它似乎有一个相当实用的实现。特别是查看随附的示例应用程序。谢谢。这是一个很好的建议。发布问题后,我立即浏览了AppKit示例,找到了草图项目。这是开始学习的好方法。谢谢。这是一个很好的建议。发布问题后,我立即浏览了AppKit示例,找到了草图项目。这是开始学习的好方法。