Я пытаюсь создать небольшое приложение для рисования в Visual Studio 2015. Мой проект относится к категории приложений Windows Form. У меня следующая проблема:Как сохранить нарисованные фигуры после обновления формы?
private void Form1_MouseMove(object sender, MouseEventArgs e)
{
if (a == 1)
{
if (r == 1 || el == 1)
{
int x = Math.Min(inX, e.X);
int y = Math.Min(inY, e.Y);
int width = Math.Max(inX, e.X) - Math.Min(inX, e.X);
int height = Math.Max(inY, e.Y) - Math.Min(inY, e.Y);
rect = new Rectangle(x, y, width, height);
Refresh();
}
else if (l == 1)
{
ep = e.Location;
Refresh();
}
else
{
ep = e.Location;
g = this.CreateGraphics();
g.DrawLine(p, sp, ep);
sp = ep;
}
}
}
Эта часть моих кодов создает Прямоугольную (второго если), отрезок (третьего если) и только строку. Он работает почти так же, как MS Paint; прямоугольник или сегмент линии не завершены до тех пор, пока пользователь не отпускает левый клик мыши (Mouse up). Но когда наконец создается прямоугольник, когда я пытаюсь создать еще один, форма обновляется (Refresh();), и я теряю все предыдущие нарисованные прямоугольники или линии. Я попытался заменить Refresh(); с Invalidate (rect); и Обновить();, но я не получаю результат, которого хочу.
Вместо этого, я получаю это:
Immediate (как GDI в вашем случае) против удержанного режима объяснения - https://msdn.microsoft.com/en-us/library/windows/desktop/ff684178(v=vs.85).aspx –