例如,假设我的 OnPaint 绘制了一条与称为长度的变量一样长的线。还有一个叫做颜色的布尔值。如果 bool 为真,则线为红色,如果为假,则线为黑色。屏幕上可能有两条不同颜色和不同的长线(我的问题是:OnPaint 重绘整个表面,但是否可以保留一些图纸)?
我知道这个问题可能有点令人困惑。
据我所知没有这样的功能。
但是您可以创建自己的 OnPaint 方法(无需调用 base.OnPaint())并集成此逻辑(通过仅绘制您需要的元素 - 并且某些内容可能会保留)但这可能是不好的方法,可能会导致您犯很多错误。
这将根据 isValid == true 或 false 以不同的长度和颜色绘制两条线。线条将留在屏幕上。对于您问题的另一部分,亚历克斯提供了正确的方法。
using System.Drawing;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Paint(object sender, PaintEventArgs e)
{
Graphics g = e.Graphics;
bool isTrue = false;
if (isTrue == true)
{
g.DrawLine(Pens.Red, new Point(0, 50), new Point(150, 50));
}
else
{
g.DrawLine(Pens.Blue, new Point(0, 50), new Point(300, 50));
}
g.Dispose();
}
}
}