我在C#.NET中创建一个应用程序.我有8个图片框.我使用了具有透明背景的PNG图像,但在我的形式中,当它出现在另一个图像上方时它是不透明的.
我正在使用Visual Studio 2012.这是我的表单的屏幕截图:

对于我的项目,我需要使用透明背景显示图像.我制作了一些具有透明背景的.png图像(为了检查这一点,我在Photoshop中打开它们).现在我有一个扩展PictureBox的类:
class Foo : PictureBox
{
public Foo(int argument)
: base()
{
Console.WriteLine(argument);//different in the real application of course.
//MyProject.Properties.Resources.TRANSPARENCYTEST.MakeTransparent(MyProject.Properties.Resources.TRANSPARENCYTEST.GetPixel(1,1)); //<-- also tried this
this.Image = MyProject.Properties.Resources.TRANSPARENCYTEST;
((Bitmap)this.Image).MakeTransparent(((Bitmap)this.Image).GetPixel(1, 1));
this.SizeMode = PictureBoxSizeMode.StretchImage;
this.BackColor = System.Drawing.Color.Transparent;
}
}
Run Code Online (Sandbox Code Playgroud)
然而,这只是显示带有白色背景的图片框,我似乎无法使其与透明背景一起工作.
有两个重叠的PictureBox控件,我试图让图片框的透明区域让下面的控件(在z顺序)可见.
即使在尝试微软的建议之后,我也无法获得理想的结果.
这就是我目前拥有的:

这就是我想要的:

所以我的问题是:
用两个PictureBox控制(或用另一种方式)实现我想要的结果的任何方法相互重叠并让透明区域透过?
更新:
实际上我通过使用这个问题" 使用C#WinForms透明图像 "的答案解决了它.
我有个问题:
我有3个图片框,有3个不同的图像,如图像
我可以设置为pictureBox3所以两个图像看起来相同.....

编辑: 我想在pictureBox2上移动pictureBox3,
因此没有选项将它们合并到单个图像
我有两个重叠的图片框.两个图片框的图像都有一些透明像素.我想通过重叠图片框的透明像素看到底部图片框.
我尝试将两个图片框的背景颜色设置为透明.但它只是将图片框的背面颜色设置为表单的背景颜色.
我的表单上有一个图片框,我添加了一张图片.这张照片有一个透明的背景,但不幸的是,它似乎在图片框中丢失了...我猜这是因为图片框的背景颜色属性设置为灰色(默认).我看不到"透明"的任何选项.
知道怎么做吗?
我有一个窗体形式的图像集合,并希望使它们"非矩形" - 即透明背景.
但是,使用时transparencyKey,是的,都会松开背景颜色.但是,在任何时候我都只能看到一个而不是另一个(取决于哪个是'带到前面').
有没有办法在表格上显示两个图像,都是"非矩形",两者都有透明背景?
请注意:我设法让背景变得透明(TransparencyKey设置为a gray (RGB of 66,66,66),两个图像都具有相同的背景.
我听说过' regions' 这个术语,但从我所知道的情况来看,这通常是CPU上非常'重'的方式.
任何建议都非常感谢并乐于回答任何澄清问题(因为我不太擅长解释自己).
注意.我试图实现的"效果"类似于项目启动时开启的X战警门 - 我的桌面就在后面.
