无法在面板中设置PictureBox位置

时间:2010-04-07 14:27:08

标签: c# panel location

我创建了一个面板。 这有autoscroll = true

在开始时,我添加了6个带有图像的256x256图片框。 我存储了最后一个图片框位置,以便我知道在哪里放置一个新的图片框。

我还在面板的右上角添加了一个图片框(位置(8744,8744)),这样面板将拉伸到9000px。

稍后当我在面板中滚动时,我可以按一个按钮并向面板添加一个图片框。问题是,当我设置图片框的位置并将其添加到面板时,它在视觉上完全出错。

添加更多图片的代码。

private void addPictureBox(Point pixelCoordinates, Bitmap image)
{
        PictureBox pNewImage = new PictureBox();
        imagePanel.Controls.Add(pNewImage);

        pNewImage.Image      = image;
        pNewImage.Name       = "image_:" + pixelCoordinates.X + "_" + pixelCoordinates.Y;
        pNewImage.Location   = pixelCoordinates;
        pNewImage.Size       = new System.Drawing.Size(256, 256);
        pNewImage.Visible    = true;
        pNewImage.BackColor  = Color.White;

        imagePanel.Update();

}

如果我调试并观察面板,它说新的图片框具有我设置的位置,但在视觉上,它不是。

我注意到这才是真正发生的事情: 图片框的位置来自我滚动的位置+ location.X。

任何人都知道如何解决这个问题?

提前致谢。

1 个答案:

答案 0 :(得分:2)

如果在滚动离开坐标0,0后添加了图片框,则可能需要通过向pixelCoordinates添加滚动量来解释此问题。尝试在计算中使用imagePanel.VerticalScroll.ValueimagePanel.HorizontalScroll.Value