C# 使用文本框更改范围(createGraphics)
我正在尝试这个,但不起作用 我想用“getal1”更改eclipse的范围 代码如下:C# 使用文本框更改范围(createGraphics),c#,C#,我正在尝试这个,但不起作用 我想用“getal1”更改eclipse的范围 代码如下: private void panel1_Paint(object sender, PaintEventArgs e) { int getal1 = 0; SolidBrush sldBrush1 = new SolidBrush(Color.Red); Graphics tknn1 = panel1.CreateGra
private void panel1_Paint(object sender, PaintEventArgs e)
{
int getal1 = 0;
SolidBrush sldBrush1 = new SolidBrush(Color.Red);
Graphics tknn1 = panel1.CreateGraphics();
tknn1.FillEllipse(sldBrush1, 0, 0, getal1, getal1);
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
int getal1 = int.Parse(textBox1.Text);
textBox1.Text = getal1.ToString();
}
根据@TaW的评论,这里有一种方法可以做到这一点。我建议为文本框添加一些更好的验证。您可以看到关于制作只接受数字的
文本框的问题。需要注意的一点是,由于在代码中您使用预定义的红色创建了一个SolidBrush
,因此您可以使用类中的静态红色笔刷
您的getal1
变量对这两种方法都是局部变量。您需要将其设置为类级别变量。此外,在textBox1\u TextChanged
方法中,您可能不希望使用刚从文本框中读取的文本设置文本,尤其不希望在TextChanged
事件中设置文本。如果无法将文本解析为Int
,则Int.Parse
将抛出异常。您可能想考虑<代码> In .TyPARSE < /C> >它将返回一个布尔值,告诉您解析是否成功。WiFraseCasic基本规则(1):永远不要使用<代码>控件。CreateGraphics < /代码>!切勿尝试缓存图形
对象!使用Graphics g=Graphics.FromImage(bmp)
或在控件的Paint
事件中,使用您拥有的e.Graphics
参数将bmp绘制到位图中我将在Paint事件中解析数字,并通过执行panel1触发Painrt。在TextChanged事件中使无效。@pstrjds好的,我只是从C开始,不理解您的答案。你能不能在回答中不作评论,而是更详细地回答。我试过你说的,但没用。我将变量不放在panel_paint1内,而是放在initializeComponent()下。我试着把它改成TryParse,但整个句子的语法都错了。@TaW我会在这件事解决后记住的,我明白了,没关系。感谢您的timeGraphics tkn1=panel1.CreateGraphics();请删除这条无用的线@TaW-完成-这是复制的剩余部分。我以为我把它删掉了,只是错过了。谢谢
private void panel1_Paint(object sender, PaintEventArgs e)
{
// Check if the text box can be parsed as an int and only
// update the elipse if it is valid
int getal1 = 0;
if (int.TryParse(textBox1.Text, out getal1))
{
e.Graphics.FillEllipse(Brushes.Red, 0, 0, getal1, getal1);
}
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
panel1.Invalidate();
}