【问题标题】:Extending the width of a picturebox from the left side从左侧扩展图片框的宽度
【发布时间】:2017-03-19 20:24:04
【问题描述】:

所以我想从图片框的左侧增加图片框的宽度并且一直无法找到这样做的方法......

imgBeam1.Left += xChange;
imgBeam1.Width -= xChange; //I want this to move the width from the left side.

我的计划是将图片框向右移动,同时向左扩展宽度。

谁能帮忙?

也许有一种更有创意的方式来做到这一点?

编辑: 这是我在业余时间做的一款 DBZ 光束竞赛/光束角斗游戏,在游戏的光束角斗部分,表格右侧的角色有更好的显示光束的方式,因为我可以向右移动图片框的宽度,同时向左移动图片框。虽然字符位于表单的左侧,但我只能将宽度扩展到右侧,一次只显示图像的各个部分。

由于图像是如何加载到图片框中的(从左到右,左侧首先显示),我不确定是否可以获得相同的效果。而且我无论如何都找不到扩展图片框左侧宽度的方法。

但是谢谢你的回复。我今天做了这个帐户,并不认为这很难解释,但确实如此。也许下次我会显示图像,因为这样解释起来更容易。谢谢!

编辑 2: -视觉解释

【问题讨论】:

  • 关闭,但标志(!)都是错误的。
  • 为左添加一个 (-) 符号会将图像向左移动,这不是我想要的。我希望图片框向右移动,同时将图片框左侧的宽度向左延伸。我不确定这是可能的,因为图像是如何加载到图片框中的......所以这可能是浪费时间。我会坚持向右扩展宽度。
  • 将图片框左侧的宽度向左扩展。 ???左侧没有宽度,它只有一个位置。 - 好吧,看起来你并不是真的在询问图片框,而是询问其中显示的图像?不幸的是,这使问题更加不清楚!
  • 好吧,在编码之外,图片框有 8 个点,我可以单击并拖动这些点来扩展图片框的大小。我可以将图片框的左侧拖到左侧,这将扩展它的宽度。我找不到通过代码执行此操作的方法。我只能将宽度向右或向内向左扩展 -.- 非常抱歉我的错误解释!
  • 我可以将图片框的左侧拖到左边,这会扩大它的宽度。嗯,但是这个将它移动到左边相同的数量,这不是你想要的?

标签: c# width picturebox


【解决方案1】:

据我了解,您的帖子实际上并不是要更改PictureBox外部尺寸,而是要移动Image 内部

但这是不可能的。你所能做的就是在两个SizeModes之间进行选择:

  • Normal 会将图片放在左上角。
  • Center 将,是的,将其置于控件的中心。

所以让它看起来像是在移动或以不同的方式放置,例如向右对齐,您可以使用此解决方法:

  • PictureBox 添加到Panel

  • 使面板与 PictureBox 一样小,使其充当“视口”。

  • 使图片更大,甚至可能是全尺寸,即SizeMode Autosize

  • PictureBox 中删除Border 并将其添加到Panel

  • 保留PictureBox Backcolor Transparent

现在您可以将PictureBox 移动到Panel 内,看起来好像只有Image 在视口下移动......:

这是用鼠标左右移动的代码:

Point mDown = Point.Empty;
private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
{
    mDown = e.Location;
}

private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
{
    if (e.Button.HasFlag(MouseButtons.Left))
        pictureBox1.Left += e.X - mDown.X;
}

请注意,大 PictureBox嵌套在小 Panel 内,而不是相反!

当然动画或其他布局更改也是可能的..

【讨论】:

  • 非常感谢!这绝对是我一直在寻找的东西 :) 你是个 G。非常好的解释/格式!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多