gpt4 book ai didi

objective-c - 简单的绘图应用程序设计——Hillegass Book,Ch。 18

转载 作者:行者123 更新时间:2023-12-03 16:39:28 25 4
gpt4 key购买 nike

我正在学习 Aaron Hillegass 的 Mac OS X 的 Cocoa 编程,并正在完成第 18 章的挑战。基本上,挑战是编写一个可以使用鼠标绘制椭圆形的应用程序,并且另外,添加保存/加载和撤消支持。我正在尝试为这个遵循 MVC 的应用程序考虑一个好的类设计。这就是我的想法:

有一个代表椭圆形(比如 JBOval)的 NSView 子类,我可以用它轻松绘制椭圆形。有一个主视图 (JBDrawingView),用于保存 JBOval 并绘制它们。

问题是我不确定如何添加存档。我应该存档每个 JBOval 吗?我认为这可行,但归档 NSView 似乎效率不高。关于更好的类设计有什么想法吗?

谢谢。

最佳答案

Have a NSView-subclass that represents an oval (say JBOval) that I can use to easily draw an oval.

这听起来不太符合 MVC。 “JBOval”对我来说听起来像是一个模型类。

Have a main view (JBDrawingView) that holds JBOvals and draws them.

我很喜欢这一部分。

我的建议是让每个模型对象(JBOval 等)能够创建代表自身的贝塞尔路径。 JBDrawingView(您应该为此想出一个更好的名称,因为所有 View 都按定义绘制)应该询问每个模型对象的贝塞尔路径、填充设置和描边设置,并相应地绘制对象。

这保留了如何在其所属的各种形状类中绘制的知识(路径、线宽、颜色等),同时还将实际的绘制代码保留在其所属的 View 层中。

从这一点来看,归档代码放在哪里的答案应该是直观明显的。

关于objective-c - 简单的绘图应用程序设计——Hillegass Book,Ch。 18,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3039683/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com