对Cocoa绘图应用程序的建议

mrf*_*ble 5 cocoa drawing nsview cocoa-design-patterns

我是Cocoa的新手,正在为经验丰富的Cocoa-ers的应用程序寻找一些建议. 

我正在构建一个基本的OmniGraffle风格的应用程序,其中对象被绘制/拖动到画布上.在对象在画布上之后,可以选择它们来修改它们的属性(填充颜色,笔触颜色/宽度等),调整大小,移动到新位置等.

为了得到热身,我写了一个基本的绘图应用程序,用于创建由鼠标在自定义上绘制的对象(圆形,矩形等)NSView,将对象添加到NSArray集合中,并将集合的内容呈现到视图中.我可以继续这样,但我将不得不添加对检测对象选择,解析z-indexing,焦点突出显示,拖动句柄等所有相关渲染的支持.此外,渲染每个周期的每个对象似乎非常浪费.

似乎更好的方法是将轻量级视图对象拖放到画布上,该画布能够检测自身上的鼠标事件,绘制自己及其聚焦环等等.然而,虽然NSView看起来像是具有这些属性的对象,但我在网上看到很多关于它是一个有很多包袱的重量级组件的喋喋不休.我偶然发现了它NSCell并且已经阅读了它们,但我不确定它们是否是正确的选择.

有什么建议?如果你能在正确的方向上推动我,我会非常感激.

Pet*_*sey 3

优化的第一条规则:不要先做。

\n\n

每个形状的自定义 NSView 听起来对我来说很合适。您是否需要针对不同形状的不同子类将取决于您;我将从一个通用的形状视图类和能够将自己描述为 B\xc3\xa9zier 路径的形状开始,但不要太严格地坚持 \xe2\x80\x94 如果它会使更容易。只要实施它,只要它对你有意义。

\n\n

然后,一旦它开始工作,就对其进行分析。尽可能多地制作形状。然后再做更多。高多边形数形状。交叉口。填充、描边、阴影和渐变。您可能应该为每个压力源创建一个单独的文档。仅注意用户级别的慢速情况。然后,在 Instruments 下运行您的应用程序并查看其速度慢的原因。

\n\n

也许观点会被证明是错误的解决方案。不要忘记查看 CALayers。但在您尝试并测量之前,不要排除任何缓慢的情况。

\n