4

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

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

我的意思是你有图片框,比如说 100 x 100,你希望将它减小到 50 x 100,所以你的图片框下面会出现“空白空间”,而不是上部。PictureBox 从这个左上角零点开始计算它的属性。

而我需要的是把这个点改到另一个角落。
所以当我改变我的身高时,它会向上计数,而不是向下计数。请帮帮我。

我真的希望你能理解我。

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

这是一个例子:

简单的图像分裂到两侧:地球和天空

Button1 点击事件:

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

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

按钮按下的结果

但我需要另一个结果:

在此处输入图像描述

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

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

此属性的有效值取自 PictureBoxSizeMode 枚举。默认情况下,在 PictureBoxSizeMode.Normal 模式下,Image 被放置在 PictureBox 的左上角,任何对于 PictureBox 来说太大的图像部分都会被剪裁掉。使用 PictureBoxSizeMode.StretchImage 值会使图像拉伸以适合 PictureBox。

4

1 回答 1

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;
}

我将把调整宽度的大小和两者同时作为读者的练习,以及指定一个任意参考点。

于 2012-11-05T13:43:48.987 回答