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