0

例如,假设我的 OnPaint 绘制了一条与称为长度的变量一样长的线。还有一个叫做颜色的布尔值。如果 bool 为真,则线为红色,如果为假,则线为黑色。屏幕上可能有两条不同颜色和不同的长线(我的问题是:OnPaint 重绘整个表面,但是否可以保留一些图纸)?

我知道这个问题可能有点令人困惑。

4

2 回答 2

0

据我所知没有这样的功能。

但是您可以创建自己的 OnPaint 方法(无需调用 base.OnPaint())并集成此逻辑(通过仅绘制您需要的元素 - 并且某些内容可能会保留)但这可能是不好的方法,可能会导致您犯很多错误。

于 2013-01-11T09:37:38.730 回答
0

这将根据 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();
        }
    }
}
于 2013-01-11T10:02:07.517 回答