问题: 如何从 OnPaint() 方法以外的方法正确绘制 winform?
附加信息: 我现在的代码在 OnPaint() 方法中为 TicTacToe 游戏绘制了一些背景线。然后我使用 Mouse_Click 事件并运行这段显然不正确的代码:
private void TicTacToe_MouseClick(object sender, MouseEventArgs e)
Graphics g = this.CreateGraphics();
g.DrawEllipse(this.penRed, this.Rectangle);
由于我不明白的原因,它确实绘制了圆圈,但是当最小化或将窗体移出屏幕时,它会删除圆圈而不是 OnPaint() 方法中的线条。
最佳答案
你做了很多“ View ”但没有“模型”。
当您想创建一个形状时,当鼠标按钮向下/向上时,创建一些代表该形状的数据。
您的数据结构代表持久信息(它是允许您在 session 之间保存和加载此信息的数据)。
所有您的绘制函数需要做的就是查看数据结构并绘制它。因此,这将在调整大小/隐藏/显示之间持续存在。
关于C# 画线 OnPaint() 与 CreateGraphics(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15057406/