【发布时间】:2015-05-06 02:34:18
【问题描述】:
在我的 GUI 中,我需要将 Parents 的 PictureBoxes 更改为背景 PictureBox 以便透明度正常工作。
但是,更改父级也会更改图片框的位置。我曾尝试通过PointToClient 抓取图片框的绝对位置,但它不起作用。我将坐标放在 cmets 中,即使图像明显改变位置,在分配新父级后它们也不会改变。此外,我不认为它可能会工作,因为它正在传递一个点,而不是一个包含更多关于父母的信息的对象以及推断绝对位置所需的东西。
推断元素绝对位置的正确方法是什么,以便我可以在其父项更改后将图像移动到正确位置?或者有更好的方法吗?
Point oldRel = pictureBox4.Location; //258, 109
Point oldAbs = PointToClient(oldRel); //75, -96
//Commenting out this line fixes the image shift but ruins the transparency
pictureBox4.Parent = pictureBox2;
Point newRel = pictureBox4.Location; //258, 109
Point newAbs = PointToClient(pictureBox4.Location); //75, -96
【问题讨论】:
-
相对于其父级或表单的绝对位置?
-
如果你想绝对坐标将所有坐标转换为屏幕坐标。
-
首先应该是pictureBox4.Parent.PointToScreen(),在你改变父级之后就是pictureBox4.Parent.PointToClient()。
-
您的问题解决了吗?