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

Posted

技术标签:

【中文标题】如何通过在 C# windows 窗体中的文本框中输入来更改图像的大小?【英文标题】:How to change the size of image by giving input in textbox in C# windows form? 【发布时间】:2018-01-14 14:43:11 【问题描述】:

我有一个 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);

【问题讨论】:

这在什么方面不起作用?请注意,您正在创建一个PictureBox 并设置它的HeightWidth,但是您并没有对它做任何事情。你永远不会显示它。 您需要在表单的任何地方重复使用相同的PictureBox 实例。否则,您只需继续添加新的。将pb 设为实例变量并避免重新创建它。 接下来应该做什么请帮忙,因为我是 C# 新手 【参考方案1】:

每次你这样做:

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() 现在只被调用一次,因此只创建了一个实例。)

【讨论】:

【参考方案2】:

好像你每次都为你的PictureBox控件创建一个新实例,你应该在winforms Designer中为你的PictureBox控件命名,然后在后面的代码中做这样的事情:

 private void button1_Click(object sender, EventArgs e)
    

        PictureBoxName.Width = TxtBox1.Text;
        PictureBoxName.Height = TxtBox2.Text;



    

它将确保您每次单击按钮时都使用相同的实例。

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

【讨论】:

如何在 button_1 点击上查找位置

以上是关于如何通过在 C# windows 窗体中的文本框中输入来更改图像的大小?的主要内容,如果未能解决你的问题,请参考以下文章

第一章 C#入门 (Windows窗体应用程序)

C# windows窗体中的文本框到数组声明

在 Windows 窗体 C# 中创建 POI 映射。如何将图标(图像)放在地图上(图片框中的现有图像)?

急求C#窗体操作VSTO如何向word模板中的特定文本框添加图文信息

将 Windows 窗体列表框保存到文本文件 C#

如何从文本框(windows窗体)检查主键是不是存在于我的数据库中,c#