C# 画线 OnPaint() 与 CreateGraphics()

标签 c# drawing line

问题: 如何从 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/

相关文章:

c# - 用 C# 为 Windows API 编写 COM 服务器,从哪里开始?

java - 在java中删除一个形状

objective-c - 是否可以通过电子邮件发送 UIView?

swift - swift 在同一行左右对齐

text - Hadoop Mapreduce:TextInputFormat和处理行?

c# - 如何在 C# 中向非泛型类的构造函数添加泛型约束

c# - 将 Java 泛型转换为 C# 泛型

c# - c#代码中的youtube api

ruby - Ruby 绘图库

performance - 如何以最佳效率在paperjs中重新定位路径线?