Как вы разрабатываете приложение для рисования, редактирования и сохранения моделей UML в Какао? - PullRequest
1 голос
/ 21 ноября 2008

Будут ли отдельные фигуры диаграммы UML быть подклассами NSView или NSBezierPaths? Как создаются и управляются диаграммы?

Ответы [ 4 ]

3 голосов
/ 21 ноября 2008

Один из способов сделать это:

  • Создание приложения на основе документов
  • Дизайн классов моделей для различных объектов, которые конечный пользователь сможет нарисовать на вашем холсте, все вместе используют один абстрактный суперкласс
  • В вашем классе CanvasView реализуйте drawRect и заставьте его вызывать подкласс NSDocument, или для более детальных классов - это viewcontroller, чтобы получить все объекты, которые должны быть нарисованы в правильном порядке, чтобы нарисовать их.
  • Для каждого из этих объектов вызовите drawInteriorInView: rect: метод или что-то подобное, что они все реализовали, изнутри реализации drawRect: вашего CanvasView.

Преимущество такого гранулированного проекта заключается в том, что вы можете решить заменить чертеж NSBezierPath на прямые вызовы CoreGraphics, если вы обнаружите необходимость в этом, без необходимости полностью перепроектировать приложение.

Типичные элементы управления Какао, такие как, например, tableView, реализуют множество различных методов рисования, один для фона, один для линий сетки и т. Д. И т. Д. Все они вызываются (когда это применимо) из drawRect представления: 1015 *

Или вы можете, конечно, взглянуть на GCDrawKit , который, похоже, имеет довольно функциональную реализацию. Особенно ознакомьтесь с примером приложения, которое поставляется с ним.

2 голосов
/ 21 ноября 2008

Вы смотрели пример проекта Sketch, находящийся в / Developer / examples / AppKit? Это должно привести вас по крайней мере на полпути туда, куда вы идете.

2 голосов
/ 21 ноября 2008

Как правило, вы начинаете с подкласса NSView для представления своего «холста» и обработки событий рисования и мыши / клавиатуры. Вероятно, вы использовали бы NSBezierPath внутри ваших методов рисования, чтобы заполнить и очертить фигуры. В зависимости от того, насколько сложен код рисования, вы можете поместить все в свой подкласс NSView или создать подкласс NSCell, который потребовал бы некоторой работы из NSView. В любом случае вы захотите определить протокол источника данных (или создать привязки) для предоставления данных в NSView из объектов в вашей модели данных, которые представляют элементы UML.

Core Animation также стоило бы рассмотреть, хотя я бы начал с NSView в начале, по крайней мере, для простого прототипа.

2 голосов
/ 21 ноября 2008

Вы смотрели на OmniGraffle? Может делать то, что тебе нужно.

[ответ, не связанный с программированием ...]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...