简体   繁体   中英

Creating Rectangle in PictureBox using PictureBox.CreateGraphics

in code below in button click function i want to create a rectangle in the picureBox but when I execute it for first time it draws nothing , but for the second time clicking the rectngle appears , why?

the if statement is true in both time.

    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();

    }

Because you're doing this on the Click event. You should do it on the Paint event.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM