PictureBox大小坐标关系

时间:2012-11-05 13:36:06

标签: c# coordinates picturebox

我在这里问一个问题,因为我不确定如何在谷歌中搜索它,我不知道怎么称呼它。

我的意思是一个“零点”,它基本上位于元素的左上角,作为示例的pictureBox。因此,当我为pictureBox设置新的宽度和高度属性时,它工作正常,但它相对于左上角。

我的意思是你有了pictureBox,让我们说100 x 100,你希望将它减少到50 x 100,这样你的照片框下面就会得到“空白空间”,而不是鞋面。 PictureBox从这个左上角零点开始计算它的属性。

我需要的是将这一点改为另一个角落 因此,当我改变自己的身高时,它会倒数,而不是下降。请帮帮我。

我真的希望你能理解我。

哇,谢谢你们的意见!我测试了锚属性,Top + = 50;现在,并没有解决我的问题。让我试着用另一种方式来描述它。你有一个图像(100像素),底部是草50px,顶部是天空50px。所以你有高度为100的图片框。如果你设置pictureBox.height = 50;你会看到只有天空。但我只需要留下草。我在这里看到的主要问题是因为这个零点位于左上角。

以下是一个例子:

Simple image splitted onto the two sides: earth and sky

Button1点击事件:

private void button1_Click(object sender, EventArgs e)
    {
        pictureBox1.Height = 150;
    }

按下按钮后会得到的结果:

result of the button press

但我需要另一个结果:

enter image description here

据我了解,因为高度属性从左上角开始计算。因此,如果我将其更改为左下角或右下角,它将按我需要的方式工作。请帮助我改变这一点......

MSDN参考:http://msdn.microsoft.com/en-us/library/system.windows.forms.picturebox.sizemode(v=vs.71).aspx

  

此属性的有效值取自PictureBoxSizeMode枚举。默认情况下,在PictureBoxSizeMode.Normal模式下,图像放置在PictureBox的左上角中,并且图片框的任何太大部分都会被剪裁。使用PictureBoxSizeMode.StretchImage值会导致图像拉伸以适合PictureBox。

1 个答案:

答案 0 :(得分:0)

除非您使用的是自动处理控件布局的容器,否则您必须自己移动它。我假设您正在使用如下行来调整代码中的控件:

myPictureBox.Height = 50;

您还必须将控件的位置向下移动相同的数量:

myPictureBox.Top += 50;

概括,这样的事情应该是调整高度的技巧:

void ResizeHeightFromBottom(this Control c, int newHeight)
{
    var oldBottom = c.Bottom;
    c.Height = newHeight;
    c.Top = oldBottom - newHeight;
}

我将继续调整宽度,同时作为读者的练习,以及指定任意参考点。