如何通过在 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
并设置它的Height
和Width
,但是您并没有对它做任何事情。你永远不会显示它。
您需要在表单的任何地方重复使用相同的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 窗体中的文本框中输入来更改图像的大小?的主要内容,如果未能解决你的问题,请参考以下文章
在 Windows 窗体 C# 中创建 POI 映射。如何将图标(图像)放在地图上(图片框中的现有图像)?