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

时间:2013-10-29 17:04:52

标签: c# graphics

在按钮点击功能下面的代码中我想在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();

    }

1 个答案:

答案 0 :(得分:2)

因为您在Click事件上执行此操作。你应该在Paint事件上做到这一点。