我创建了一个面板。 这有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。
任何人都知道如何解决这个问题?
提前致谢。
答案 0 :(得分:2)
如果在滚动离开坐标0,0后添加了图片框,则可能需要通过向pixelCoordinates添加滚动量来解释此问题。尝试在计算中使用imagePanel.VerticalScroll.Value
和imagePanel.HorizontalScroll.Value
。