Я предпочитаю помещать мои изображения в экземпляры класса Picturebox
. Причина в том, что я могу просто вызвать функцию Hide()
каждой Picturebox (или установить для Visible значение false).
То, что вы делаете, рисует непосредственно в клиентской области окна, что технически не так, но обычно это следует делать в обработчике Paint формы. Если в какой-то момент вы решите, что не хотите больше видеть свой круг, вы можете вызвать метод формы Invalidate()
, который вызывает событие Paint. Там вы явно не рисуете свой круг, и поэтому для пользователя круг исчезает.
Приятной особенностью Picturebox является то, что он постоянен - вы помещаете в него свое изображение и, возможно, рисуете на нем, но вам нужно рисовать только один раз. Если вы используете технику рисования, ваш код для рисования вызывается каждый раз, когда необходимо перерисовать форму.
Изменить:
Вот некоторый код, который иллюстрирует мою информацию об обработчике Paint:
private void Form_Paint(object sender, PaintEventArgs e)
{
e.Graphics.Clear(); // clear any and all circles being drawn
if (CircleIsVisible)
{
e.Graphics.DrawEllipse( ... ); // OR, DrawImage( ) as in your example
}
}
private void MouseDoubleClick (object sender, MouseEventArgs e)
{
CircleIsVisible = true;
Invalidate(); // triggers Paint event
}
Если вы рисуете растровые изображения, я бы однажды загрузил растровое изображение и сохранил его как переменную класса. Таким образом, вам не нужно нажимать на жесткий диск каждый раз, когда вы хотите нарисовать. Утилизируйте растровое изображение, когда вы избавляетесь от своего класса (в данном случае, вашего окна).