1

我正在尝试制作一个简单的应用程序,通过将模板拖到图片上,可以将图像与透明的 PNG 模板进行比较。为此,我需要一种方法来创建一个包含 PNG 图像并且在 png 是透明的地方是透明的 PictureBox。一切正常,但透明度部分:当我将 PNG 图像加载到 PictureBox(背景颜色设置为透明)时,它显示包含面板的背景颜色,而不是它悬停的图像。

我搜索但只找到了一种使 PictureBox 完全透明的方法。

4

2 回答 2

2

很难制作部分透明的控件。

您应该做的是处理 lowerPictureBoxPaint事件(不需要透明的事件),并使用e.Graphics.DrawImage(image, x, y). 这将正确绘制透明和半透明图像。

编辑:针对您的评论,在事件中调用该Invalidate方法没有任何问题。MouseMove但是,您会注意到一些闪烁。为了解决闪烁,制作一个继承的控件,并在构造函数中PictureBox调用。SetStyle(ControlStyles.DoubleBuffered, true)

于 2009-11-23T13:28:05.110 回答
0

如果您将pictureBoxOnTop 添加到要悬停的pictureBoxToBeHovered 的控件列表中,这可以正常工作。

        pictureBoxToBeHovered.Controls.Add(pictureBoxOnTop);
        pictureBoxOnTop.BackColor = Color.Transparent;
        pictureBoxOnTop .Location = new Point(0,0) ;
于 2013-04-07T21:35:31.870 回答