【问题标题】:Can't set PictureBox location in panel无法在面板中设置 PictureBox 位置
【发布时间】:2010-04-07 14:27:08
【问题描述】:

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

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

我还在面板的右上角添加了一个图片框(location(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。

有人知道我该如何解决这个问题吗?

提前致谢。

【问题讨论】:

    标签: c# panel location


    【解决方案1】:

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

    【讨论】:

    • 我稍后再试一次。我昨天试过了,但我想我在创建图像后使用了滚动条值。这显然是错误的。我将滚动条位置与下载图像的像素坐标一起保存在哈希表中,这样我就可以从图像的像素坐标中减去滚动条位置。
    猜你喜欢
    • 2012-06-06
    • 1970-01-01
    • 2011-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-03
    • 2010-09-27
    • 1970-01-01
    相关资源
    最近更新 更多