Есть ли (похожие) .AddChild и .AddEventListeners в C # и могут ли они использоваться в Graphics? - PullRequest
0 голосов
/ 19 октября 2010

Я новичок в C #, но не в ООП.

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

Я не уверен, как именно я мог сделать это. Если бы я использовал Flash, я бы сделал что-то вроде:

my_circle_object = new disc-or-whatever-etc;
canvas.addChild(my_circle_object);
my_circle_object.AddEventListener(MouseClickEvent, function_to_remove_child);

Теперь, поскольку скомпилированные языки являются дьяволом, когда дело доходит до простых вещей, связанных с интерфейсом, я уверен, что для написания этого на C # потребуется в 20 раз больше кода. Но есть ли что-нибудь похожее на мой пример?

Я потратил весь день на чтение таких вещей, как GraphicsContainers, SmoothingPaint, Graphics Persistence с использованием растровых изображений и т. Д., Но я так и не нашел простой метод добавления события ..

Спасибо

1 Ответ

0 голосов
/ 19 октября 2010

Объекты, которые вы рисуете с использованием методов формы объекта Graphics (например, DrawLine, DrawEllipse, DrawRect и т. Д.), Не представляют концептуальные объекты в том, что касается графического API. Вызов этих функций просто выводит элемент на графическую поверхность в виде растрового изображения. Как только это будет сделано, нет ничего, к чему можно прикрепить событие.

Вам нужно будет создать свои собственные типы фигур и заставить их нарисовать себя в графическом объекте. Вам нужно будет прикрепить к соответствующим событиям мыши любой используемый вами элемент управления (я предполагаю Panel) и выполнить собственное обнаружение столкновений.

...