首页 文章

如何通过在C#窗体中的文本框中输入来更改图像的大小?

提问于
浏览
0

我有一个Windows窗体和两个文本框的图像 . 我希望当我在这些文本框中输入值并按Enter键时,它会影响图像:图像的高度和宽度应更改为文本框值 .

private void buttonZ1_Click(object sender, EventArgs e)
{
   PictureBox pb = new PictureBox();
   pb.SizeMode = PictureBoxSizeMode.StretchImage;
   pb.Image = new Bitmap("C:\\Users\\user\\Desktop\\rectangle.png");
   Point p = new Point(250 + i, 60 * i);

   pb.Location = p;
   this.Controls.Add(pb);
   i++;
   textBox1.Text = Convert.ToString(pb.Height);
   textBox2.Text = Convert.ToString(pb.Width);
   textBox3.Text = pb.Location.X.ToString();
   textBox4.Text = pb.Location.Y.ToString();
}

private void button1_Click(object sender, EventArgs e)
{
    PictureBox pb = new PictureBox();
    pb.Height = Convert.ToInt32(textBox1.Text);
    pb.Width = Convert.ToInt32(textBox2.Text);
}

2 回答

  • 0

    每次你这样做:

    new PictureBox()
    

    您创建一个新的 PictureBox ,与已存在的任何其他 PictureBox 完全无关 . 所以在你的 button1_Click 方法中,每次单击该按钮都会创建一个新的 PictureBox . 但是你永远不会显示 PictureBox ,它只存在于内存中(直到方法结束,然后它就消失了) .

    听起来您想要设置在 buttonZ1_Click 中创建的 PictureBox 的值 . 如果是这种情况,请将其作为表单上的类级变量 . 像这样的东西:

    PictureBox pb = new PictureBox();
    
    private void buttonZ1_Click(object sender, EventArgs e)
    {
        pb.SizeMode = PictureBoxSizeMode.StretchImage;
        pb.Image = new Bitmap("C:\\Users\\user\\Desktop\\rectangle.png");
        // etc.
    
        // The code here doesn't change, you just remove the first "new PictureBox()" line
    }
    
    private void button1_Click(object sender, EventArgs e)
    {
        pb.Height = Convert.ToInt32(textBox1.Text);
        pb.Width = Convert.ToInt32(textBox2.Text);
    }
    

    此代码与您之间的唯一区别是 PictureBox 的实例是在类级别声明和创建的,而不是在每个方法中重复 . 因此每个方法都将使用 PictureBox 的相同实例 . (注意命令 new PictureBox() 现在只调用一次,因此只创建一个实例 . )

  • 0

    看起来每次为 PictureBox Control创建一个新实例,你应该在winforms Designer中为你的PictureBox控件命名,然后在后面的代码中执行类似的操作:

    private void button1_Click(object sender, EventArgs e)
        {
    
            PictureBoxName.Width = TxtBox1.Text;
            PictureBoxName.Height = TxtBox2.Text;
    
    
    
        }
    

    每次单击Button时,它都会确保您使用相同的实例 .

    请确保在TextBox控件上设置整数值,您可以对其进行一些验证 .

相关问题