我有几个图片框需要在窗口大小改变时按宽高比调整大小。我假设我可以锚定宽度,但手动设置高度(即锚定左,右和上边缘;但不是底部。)但是,如果我尝试更改Size属性,我的控件将不会调整大小。为什么那不起作用?我该如何调整控件的大小?
private void Form1_Resize(object sender, System.EventArgs e)
{
int oldWidth = 1280;
int oldHeight = 1024;
int newWidth = webcamPictureBox.Size.Width; // this is auto-resized w/ window; becomes 591
int newHeight = (oldHeight * newWidth) / oldWidth; // this is calculated manually; becomes 472
// Control won't resize if I change the Size property
// Size property stays the same
this.webcamPictureBox.Size = new Size(newWidth, newHeight);
this.thumbnailPictureBox.Size = new Size(newWidth, newHeight);
}
答案 0 :(得分:1)
我想你可能会遇到一些问题:
PictureBox的SizeMode
是什么?它是AutoSize
,StretchImage
还是类似的东西?对于您想要做的事情,它应该是Normal
。
您确定要正确设置锚点吗?
您是否调试并检查了您要调整大小的图片框的最终尺寸?您应该验证它是否符合您的预期并且表格已经重新粉刷。
这些只是一些想法;你的代码不足以提供很好的响应。
答案 1 :(得分:0)
很难用您发布的信息明确回答这个问题。
Windows窗体控件本质上很难调试问题,因为可能会影响您正在执行的操作的所有控件。首先,您需要尝试在尽可能少的控件的表单上自行调试。在任何情况下调整大小都能正常运行吗?
那就是说,这些控件上是否设置了Dock属性?如果将它们设置为DockStyle.Fill,它们肯定不会调整大小。
答案 2 :(得分:0)
感谢您的想法 - 他们指出我走在正确的轨道上!除了他们所在的TableLayoutPanel限制了它们的大小之外,所有内容都按原样设置。我通过注意到图片框的大小值在运行时和设计器中都是不可编辑的来确定这一点。
所以我将TableLayoutPanel的AutoSize设置为true,并且效果很好!