我正在尝试在Visual Studio 2015中创建一个小的绘画应用程序。我的项目属于Windows窗体应用程序的类别。我有以下问题:如何在表单刷新后保留绘制的形状?
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非常相似;直到用户释放鼠标左键(鼠标向上),矩形或线段才会完成。但是当一个矩形最终被创建时,当我再次尝试创建另一个时,表单刷新(Refresh();),并且我丢失了所有先前绘制的矩形或线条。我尝试更换Refresh();与无效(rect);和Update();,但我没有得到我想要的结果。
相反,我得到这样的:
立即(就像您的情况下的GDI)vs保留模式解释 - https://msdn.microsoft.com/en-us/library/windows/desktop/ff684178(v=vs.85).aspx –