none
Как рисовать фигуры и выводить список их объектов? RRS feed

  • Вопрос

  • Есть у меня классы геометрических примитивов, когда на холст добавляется к примеру 2 линии, мне надо задать индексы для линии, и для их точек, и вывести это. Как это реализовать? Создаю геометрический конструктор-редактор.
    19 апреля 2011 г. 10:50

Ответы

Все ответы

  • Что Вы понимаете под индексами линии и точек?

    Добавьте в класс геометрической фигуры свойство index и задавайте его при создании экземпляра класса.

    Так как геометрических объектов одного типа может быть много, то можно создать класс-коллекцию для каждого из видов геометрических фигур. Внутри этого класса будете хранить список объектов созданных геометрических фигур определенного вида, плюс различные методы для работы с этими фигурами, как единым целым.


    [My blog] [My E-mail]
    19 апреля 2011 г. 16:06
  • То есть надо класс наследника создать с дополнительным параметром? 

    Я хочу динамически мышкой нарисовать три точки, у каждой из них при создании должен задаваться индекс, к примеру A,B,C. Далее я хочу к ним как то обращаться, лучше всего через treeview, выделяю к примеру Item точка B, у меня на канвасе эта точка меняет цвет предположим. И обратно, при выделении на канве в списке соответсующий item подсвечивается..

    20 апреля 2011 г. 19:26
  • Думаю, правильнее будет это свойство не в классе-наследнике определить, а в классе-родителе, так как это свойство будет характерно для всех типов геометрических фигур.

    В TreeView вы просто выведите список типов и имен ваших геометрических фигур. Но сами объекты будут храниться у Вас в памяти и Вам надо организовать структуру в которой они у Вас будут храниться.

    Я предлагаю вам оформить это все в виде классов-контейнеров. Те, предположим:

    Классы-контейнеры: PointsCollection; LinesCollection; RectanglesCollection и тд

    Теперь Вы легко заполните Ваш TreeView данными из этих коллекций и легко сможете по выделенному Item подсветить фигуру на поле.

    Для упрощения поиска и подсветки фигуры на поле добавьте в класс коллекции каждого типа методы для поиска объекта внутри коллекции по заданным параметрам. А когда объект у Вас уже найден, Вы легко сможете с ним сделать все что Вам хочется.


    [My blog] [My E-mail]
    20 апреля 2011 г. 19:42
  • То есть делаю один абстрактный класс: Geometry, у него поля: тип фигуры

    Типы Point, Line, Ellipse - его наследники, но содержат еще поля для определения контрольных точек.

    И еще на каждый тип класс контейнер сделать? PointCollection, LineCollection, EllipseCollection, в каждом из них есть свой метод для поиска: GetPointItem(int index_point), GetLineItem(int index_line)? А массивы индексов тогда куда запихнуть? Ох, совсем запуталась... :(

    21 апреля 2011 г. 7:07
  • У Вас должна получиться примерно следующая картина:

     


    [My blog] [My E-mail]
    • Помечено в качестве ответа Abolmasov Dmitry 21 апреля 2011 г. 10:46
    21 апреля 2011 г. 8:45