gpt4 book ai didi

c# - 如果窗体上没有其他控件,图表就会消失

转载 作者:太空宇宙 更新时间:2023-11-03 21:57:10 25 4
gpt4 key购买 nike

这是我的代码

private void graphToolStripMenuItem_Click(object sender, EventArgs e)
{

button1.Visible = false;
button2.Visible = false;
button3.Visible = false;
button4.Visible = false;
label1.Visible = false;
textBox1.Visible = false;
textBox2.Visible = false;
textBox3.Visible = false;
textBox4.Visible = false;
textBox5.Visible = false;
textBox6.Visible = false;
textBox7.Visible = false;
textBox8.Visible = false;
textBox9.Visible = false;
textBox10.Visible = false;
label2.Visible = false;
label3.Visible = false;
label4.Visible = true;
gg = this.CreateGraphics();
p3 = new Pen(Color.Blue,5);
b1 = new SolidBrush(Color.Red);
p2 = new Pen(Color.Red);
Font f=new Font("Arial",16);
float ox = this.ClientSize.Width / 2;
float oy = this.ClientSize.Height / 2;
gg.DrawLine(p3, ox - 500, oy, ox + 500, oy);
gg.DrawLine(p3, ox, oy + 300, ox, oy - 300);
gg.DrawString("Argument", f, b1, ox - 100, oy - 200);
gg.DrawString("<----f(Argument)---->", f, b1, ox + 100, oy + 100);
for (int i = 0; i < 1000; i++)
{
double tem1 = graphValuesCal();
double temp2 = functionCal();
gg.FillEllipse(b1, ox + (float)tem1/2,oy-20*(float)temp2, (float)5, (float)5);
Thread.Sleep(10);
}

}

当我运行这段代码时,图形被绘制出来,但是当循环完成图形以及字符串和线(轴)消失时。如果我注释掉这段代码

                button1.Visible = false;
button2.Visible = false;
button3.Visible = false;
button4.Visible = false;
label1.Visible = false;
textBox1.Visible = false;
textBox2.Visible = false;
textBox3.Visible = false;
textBox4.Visible = false;
textBox5.Visible = false;
textBox6.Visible = false;
textBox7.Visible = false;
textBox8.Visible = false;
textBox9.Visible = false;
textBox10.Visible = false;
label2.Visible = false;
label3.Visible = false;

意味着如果所有这些控件之前都是可见的,那么当我单击 Graph menu 项时它们将保持可见。然后线条和图形不会消失这里可能有一些基本的东西,但我想我错过了那个。需要帮助

最佳答案

您的绘图应该在 OnPaint 事件方法中完成。

在你的窗体上加入 OnPaint 事件并将你的绘画添加到该方法中,如下所示:

// Put this in your constructor, or use VisualStudio to create the method for you
this.Paint += new System.Windows.Forms.PaintEventHandler(this.paint_Method);

private void paint_Method(object sender, PaintEventArgs e)
{
gg = e.Graphics;
p3 = new Pen(Color.Blue,5);
b1 = new SolidBrush(Color.Red);
p2 = new Pen(Color.Red);
Font f=new Font("Arial",16);
float ox = this.ClientSize.Width / 2;
float oy = this.ClientSize.Height / 2;
gg.DrawLine(p3, ox - 500, oy, ox + 500, oy);
gg.DrawLine(p3, ox, oy + 300, ox, oy - 300);
gg.DrawString("Argument", f, b1, ox - 100, oy - 200);
gg.DrawString("<----f(Argument)---->", f, b1, ox + 100, oy + 100);
for (int i = 0; i < 1000; i++)
{
double tem1 = graphValuesCal();
double temp2 = functionCal();
gg.FillEllipse(b1, ox + (float)tem1/2,oy-20*(float)temp2, 5f, 5f);
// Thread.Sleep(10);
}
}

您可能还想在 graphToolStripMenuItem_Click 方法中调用 this.Invalidate(),请记住,我移至此处的代码应该从该方法中删除.

关于c# - 如果窗体上没有其他控件,图表就会消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11766191/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com