PictureBox中的透明PNG

时间:2009-11-23 13:22:10

标签: c# transparency picturebox

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

我搜索过但只找到了让PictureBox完全透明的方法。

2 个答案:

答案 0 :(得分:2)

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

您应该做的是处理较低PictureBox的{​​{1}}事件(不需要透明的事件),并使用Paint绘制叠加图像。这将正确绘制透明和半透明图像。

编辑:在回复您的评论时,在e.Graphics.DrawImage(image, x, y)事件中调用Invalidate方法没有任何问题。但是,你会注意到一些闪烁。要解决闪烁问题,请创建一个继承MouseMove的控件,并在构造函数中调用PictureBox

答案 1 :(得分:0)

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

        pictureBoxToBeHovered.Controls.Add(pictureBoxOnTop);
        pictureBoxOnTop.BackColor = Color.Transparent;
        pictureBoxOnTop .Location = new Point(0,0) ;