PictureBox 图片不会缩小,但 PictureBox 本身会扩展以适应图片。

3
当我在运行时向表单添加picturebox时,picturebox的表现完全符合我的要求。但是当我将它添加到面板中时,pictureBox会扩展以适应图像。
以下是代码:
private PictureBox globalPicBox = (PictureBox)null;

private void Form1_Load(object sender, EventArgs e)
{
    this.globalPicBox = new PictureBox();
    this.globalPicBox.Name = "a";
    this.globalPicBox.Tag = (object)"a";
    this.globalPicBox.SizeMode = PictureBoxSizeMode.StretchImage;
    this.globalPicBox.Top = 50;
    this.globalPicBox.Left = 50;
    this.globalPicBox.Height = 100;
    this.globalPicBox.Width = 100;
    this.globalPicBox.Image = Image.FromFile(@"C:\Users\PC\Downloads\Photo.jpg");
    this.globalPicBox.BorderStyle = BorderStyle.FixedSingle;
    this.globalPicBox.AutoSize = true;
    this.panel1.Controls.Add((Control)this.globalPicBox);
}

什么是问题?为什么会出现这个问题?

5
提示,不是关于问题的:你代码中的所有类型声明((PictureBox)(object)(Control)),都是不必要的。 - dovid
3
我运行了您的代码,它可以正常工作 - 图片框保持在100x100px大小,并压缩我的图片。也许您在代码的其他地方调整了图片框的停靠方式或更改了 AutoSizeSizeMode - noelicus
一样的情况...工作得很好,就像它应该的那样。 - Asken
你尝试过更改“Dock”属性吗? - Uri Y
当您使用 AutoSize = true 时,您的意思是“调整 PictureBox 的大小与图像相同”,而不是“调整图像以适应 PictureBox”。实际上,您需要将 AutoSize 设置为 false。图像内部的调整模式由 SizeMode 处理,正如您已经正确设置的那样。 - Luaan
显示剩余2条评论
2个回答

2
根据您的编辑...设置globalPicBox.AutoSize = false,它就会起作用。
如果不行,请检查您的代码中是否更改了globalPicBoxAutoSize、SizeMode和Dock参数,希望您能找到答案!

0
简单的设置globalPicBox.SizeMode=Strech 图片将会根据picturebox的大小缩小或拉伸,而你的picture box不会扩大或缩小,它将保持相同的大小。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接