首页 > 解决方案 > this.Refresh() 阻止新图

问题描述

我正在开发一个程序,通过绘制事件在标签内绘制一个矩形。然后通过按钮单击事件,我想重新绘制标签内部,现在具有原始矩形和一个新矩形,即 .TranslateTransform 一些输入。现在问题来了:我能够创建新的原件和副本,但是如果我按下按钮,我就会得到副本的副本。我想如果在重绘之前我使用 label.Refresh() 或 .Invalidate() 可以解决这个问题,但现在我什至无法获得一个副本。

在此先感谢您的帮助。这是代码:

 public int x, y;
 public float p, q;
 Graphics g;
 SolidBrush brush1 = new SolidBrush(Color.Green);

        public Form1()
        {
            InitializeComponent();

        }

        private void label5_Paint_1(object sender, PaintEventArgs e)
        {
            g = e.Graphics;

            g.FillRectangle(brush1, 50, 50, 100, 50);

        }

        private void shift(object sender, PaintEventArgs e)
        {
            string a, b;
            a = textBox1.Text;
            x = int.Parse(a);
            b = textBox2.Text;
            y = int.Parse(b);

            var g = e.Graphics;
            Brush br = new SolidBrush(Color.DarkOrange);
            g.TranslateTransform(x, y);
            g.FillRectangle(br, 50, 50, 100, 50);
        }

        private void button1_Click(object sender, EventArgs e)
        {

            label5.Invalidate();
            label5.Paint += new PaintEventHandler(shift);

        }

        private void resize(object sender, PaintEventArgs e)
        {
            string c, d;
            c = textBox3.Text;
            p = float.Parse(c);
            d = textBox4.Text;
            q = float.Parse(d);



            var g = e.Graphics;
            Brush br = new SolidBrush(Color.DarkOrange);

            g.ScaleTransform(p, q);
            g.FillRectangle(br, 50, 50, 100, 50);
        }

        private void button2_Click(object sender, EventArgs e)
        {
            label5.Invalidate();

            label5.Paint += new PaintEventHandler(resize);

        }

标签: c#winforms

解决方案


推荐阅读