C ++ / CLI Visual C ++ 2010 Express - Рисование различных фигур на одной панели - PullRequest
0 голосов
/ 11 декабря 2011

У меня проблема. Существует панель 1, которую я хочу использовать в качестве окна для рисования. И у меня также есть 2 кнопки. Нужно нарисовать «fillRectangle» в середине панели, а второй - «fillellipse» рядом с ним. У меня нет проблемы с рисованием самого себя

Color aColor = Color::FromArgb( 255, 0, 0 ); 
SolidBrush^ aBrush = gcnew SolidBrush(aColor);
Rectangle rect = Rectangle(x, y, 10, 10);
e->Graphics->FillEllipse(aBrush, rect);

Но я хочу знать, как сделать так, чтобы нажатие каждой кнопки рисовало разные формы внутри панели. Нужно ли мне помещать оба, эллипс и прямоугольник в panel1_Paint и использовать флаги, как ...

if(ellip == 1) FillEllipse; 
if(recta == 1) FillRectangle

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

1 Ответ

1 голос
/ 11 декабря 2011

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

Если вы хотите панельон рисует фигуры сам по себе в зависимости от какого-то свойства, тогда да, вы идете по пути, который вы предложили, хотя меня бы соблазнил какой-то класс фигур, даже если он не был элементом управления.Было бы намного проще добавлять другие фигуры или больше фигур.

Вы можете иметь панель с набором фигур, которые реализуют, скажем, IDraw, который принимает ссылку Graphics, а затем просто перебирать их и вызывать с графикой Panel1.экземпляр.

Если бы я хотел, чтобы я был включен, видим, вкладывал, щелкал и т. д., если бы я хотел, то у меня был бы элемент управления ShapedButton.

...