C# 如何更改PictureBox内图像的原点?

C# 如何更改PictureBox内图像的原点?,c#,winforms,C#,Winforms,Flash有一个与此完全相同的选项,您可以在其中设置注册点: 当我尝试做任何事情时,通过扩展面板设置图像的位置,尝试在PictureBox中偏移图像。。。我找不到任何东西可以做到这一点,因为: 例如,这: 如果在C中没有办法做到这一点,那也没关系。我不理解这项技术,并将与MainMa合作。通过以下两个属性提供图片的内容: PictureBox.Size.Height PictureBox.Size.Width 您可以通过以下操作设置: PictureBox.Location = new

Flash有一个与此完全相同的选项,您可以在其中设置注册点:

当我尝试做任何事情时,通过扩展面板设置图像的位置,尝试在PictureBox中偏移图像。。。我找不到任何东西可以做到这一点,因为:

例如,这:

如果在C中没有办法做到这一点,那也没关系。我不理解这项技术,并将与MainMa合作。

通过以下两个属性提供图片的内容:

  • PictureBox.Size.Height

  • PictureBox.Size.Width

您可以通过以下操作设置:

PictureBox.Location = new Point(x, y)
因此,要改变图片,请执行以下操作:

private void CenterPicture(PictureBox picture)
{
    if (picture == null)
    {
        throw new ArgumentNullException(
            "picture",
            "The picture should be specified.");
    }

    var x = picture.Location.X - picture.Size.Width / 2;
    var y = picture.Location.Y - picture.Size.Height / 2;
    picture.Location = new Point(x, y);
}

注意:记得检查。此属性的某些部分可能会调整图像的大小,这将导致在应用
中心图片
方法时图像未居中。

如果您知道
图片盒
的尺寸,则可以自己解决此问题。您如何绘制资产?它们是您放置在表单上的控件,还是在OnPaint事件处理程序中手动绘制的控件?是的,我同意,而且我知道它们。我首先寻找翻译
图片盒的
图像
的方法,但没有成功。我还试图制作一个
面板
,其中包含一个
图片盒
,但当我将
图片盒
的位置设置为负值时,我不再看到
图片盒
,但我可以看到
面板
。感谢OnPaint提醒。现在,我基本上只是在
面板
的“画布”上添加了一大堆
图片盒
,我可以通过手动上下移动鼠标来移动它们。在更熟悉的语言中,我会改变“组”的主播/来源来实现这一点。谢谢MainMa。我希望我可以不必到处处理这种额外的计算,因为编辑处理的是圆形实体,假设它们已经居中,将使所有内容保持整洁和统一。@Clark:我不确定我是否理解(即使在阅读了对原始问题的评论之后)。如何创建您自己的类
CenteredPictureBox
,该类继承自
PictureBox
,并根据图片的位置和大小自动调整图片的位置?这意味着您可以像使用任何其他对象一样使用该对象,而不必“到处处理这个额外的计算”。