使用 PictureBox.CreateGraphics 在 PictureBox 中创建矩形

本文关键字:PictureBox 创建 CreateGraphics 使用 | 更新日期: 2023-09-27 18:37:16

在下面的代码中,在按钮单击函数中,我想在picureBox中创建一个矩形,但是当我第一次执行它时,它什么也没画,但是第二次单击矩形出现,为什么?

if 语句在两个时间都为真。

    private void btnChamber_Click(object sender, EventArgs e)
    {
        //pictureBox1.Visible = true;
        if (cmbShowResult.SelectedIndex == 0 && ChamberType.SelectedIndex == 0)
        {
            chart1.Visible = false;
            chart2.Visible = false;
            chart3.Visible = false;
            chart4.Visible = false;
            chart5.Visible = false;
            pictureBox1.Visible = true;
            //pictureBox1.Enabled = true;
            Graphics gg = pictureBox1.CreateGraphics();
            //gg.ClipBounds.X = 0;
            //gg.ClipBounds.Y = 0;
            //AddChartStyle(gg);
            chartArea1.X = 0;
            chartArea1.Y = 0;
            chartArea1.Height = 298;
            chartArea1.Width = 450;

            plotArea.X = 40;
            plotArea.Y = 10;
            plotArea.Height = 258;
            plotArea.Width = 400;

            xLimMin = -(float.Parse(txtWidth.Text)) / 2;
            xLimMax = (float.Parse(txtWidth.Text)) / 2;
            yLimMin = -(float.Parse(txtLeft.Text)) * 3f;
            yLimMax = (float.Parse(txtLeft.Text)) * 3f;
            Pen aPen = new Pen(chartBorderColor, 1f);
            SolidBrush aBrush = new SolidBrush(chartBorderColor);
            gg.FillRectangle(aBrush, chartArea1);
            gg.DrawRectangle(aPen, chartArea1);
            aPen = new Pen(plotBorderColor, 1f);
            aBrush = new SolidBrush(plotBackColor);
            gg.FillRectangle(aBrush, plotArea);
            gg.DrawRectangle(aPen, plotArea);
            //AddChartStyle(g);
            //pictureBox1.Visible = true;
            //gg = pictureBox1.CreateGraphics();

            //gg.Flush();
            //gg.Save();
            //pictureBox1.Show();
            //pictureBox1.Invalidate();
            //chart6.Visible = true; 
        }
        pictureBox1.Visible = true;
        //gg.Flush();
    }

使用 PictureBox.CreateGraphics 在 PictureBox 中创建矩形

因为你是在 Click 事件上执行此操作的。您应该在 Paint 事件上执行此操作。