如何使图片框透明?

我在C#.NET中创建一个应用程序。 我有8个图片框。 我使用了具有透明背景的PNG图像,但在我的forms中,当它位于另一个图像上方时它不是透明的。

我正在使用Visual Studio 2012.这是我的表单的截图:

Form的截图

一种方法是将重叠图片框的父级更改为它所研究的PictureBox。 由于Visual Studio设计器不允许您将PictureBox添加到PictureBox,因此必须在代码(Form1.cs)和Intializing函数中完成:

 public Form1() { InitializeComponent(); pictureBox7.Controls.Add(pictureBox8); pictureBox8.Location = new Point(0, 0); pictureBox8.BackColor = Color.Transparent; } 

只需将图片框名称更改为您需要的名称即可。 这应该返回:

在此处输入图像描述

GameBoard是DataGridView类型的控件; 图像应为具有透明alpha通道背景的PNG类型;

  Image test = Properties.Resources.checker_black; PictureBox b = new PictureBox(); b.Parent = GameBoard; b.Image = test; b.Width = test.Width*2; b.Height = test.Height*2; b.Location = new Point(0, 90); b.BackColor = Color.Transparent; b.BringToFront(); 

在此处输入图像描述

尝试使用ImageList

 ImageList imgList = new ImageList; imgList.TransparentColor = Color.White; 

像这样加载图像:

 picturebox.Image = imgList.Images[img_index]; 

我有类似的问题。 您无法轻松制作透明的图片框,例如本页顶部显示的图片,因为.NET Framework和VS .NET对象是由INHERITANCE创建的! (使用父属性)。

我通过RectangleShape解决了这个问题,并使用下面的代码删除了背景,如果PictureBoxRectangleShape之间的差异不重要且无关紧要,可以轻松使用RectangleShape

 private void CreateBox(int X, int Y, int ObjectType) { ShapeContainer canvas = new ShapeContainer(); RectangleShape box = new RectangleShape(); box.Parent = canvas; box.Size = new System.Drawing.Size(100, 90); box.Location = new System.Drawing.Point(X, Y); box.Name = "Box" + ObjectType.ToString(); box.BackColor = Color.Transparent; box.BorderColor = Color.Transparent; box.BackgroundImage = img.Images[ObjectType];// Load from imageBox Or any resource box.BackgroundImageLayout = ImageLayout.Stretch; box.BorderWidth = 0; canvas.Controls.Add(box); // For feature use } 

一个快速的解决方案是为image1设置图像属性并将backgroundimage属性设置为imag2,唯一的不便是你在图片框中有两个图像,但你可以将背景属性更改为平铺,拉伸等。确保背景颜色是透明的。 希望这可以帮助

您可以将PictureBox BackColor属性设置为Transparent