Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在图片框之间使用图像透明度存储为阵列_C#_Arrays_Winforms_Transparency - Fatal编程技术网

C# 在图片框之间使用图像透明度存储为阵列

C# 在图片框之间使用图像透明度存储为阵列,c#,arrays,winforms,transparency,C#,Arrays,Winforms,Transparency,我正在使用c#和winForms创建一个应用程序,它允许我将6个图片框(每个都有不同的图像)放在另一个上面。每个图像都有大量的空白,所以我尝试使用透明度来允许用户打开和关闭图像。当图像被关闭时,所有其他图像的父/子图像将被更新以允许透明度工作 我首先创建了一个自定义类: public class MyImageWrapper { public MyImageWrapper Parent { get; set; } public PictureBox PictureBox { ge

我正在使用c#和winForms创建一个应用程序,它允许我将6个图片框(每个都有不同的图像)放在另一个上面。每个图像都有大量的空白,所以我尝试使用透明度来允许用户打开和关闭图像。当图像被关闭时,所有其他图像的父/子图像将被更新以允许透明度工作

我首先创建了一个自定义类:

public class MyImageWrapper
{
    public MyImageWrapper Parent { get; set; }
    public PictureBox PictureBox { get; set; }

    public MyImageWrapper(PictureBox i, MyImageWrapper parent = null)
    {
        Parent = parent;
        PictureBox = i;
    }
}
然后我创建了数组:

MyImageWrapper[] pictureBoxArray = new MyImageWrapper[6];
下一个代码是检查透明度是否有效的测试:

pictureBox[0] = new MyImageWrapper(pictureBox1);
pictureBox[1] = new MyImageWrapper(pictureBox2);

pictureBox1.Image = (Image.FromFile(""+ Application.StartupPath +"../../../images/imageA.png"));
pictureBox2.Image = (Image.FromFile(""+ Application.StartupPath +"../../../images/imageB.png"));

pictureBoxArray[1].Parent = pictureBoxArray[0];
不幸的是,我没有收到任何错误消息,所以它似乎正在工作。但是,当我运行程序时,图片框2不是图片框1的子对象(因此透明度不起作用)

我还没有把图像设置为打开或关闭,我仍在尝试整理透明度

具体问题是这一行:

pictureBoxArray[1].Parent = pictureBoxArray[0];
测试时,我将上述行替换为:

pictureBox2.Parent = pictureBox1;
这做了完全相同的事情(但有效!)。然而,我的程序以后需要工作的方式,我不能这样做。我需要修复阵列版本


非常感谢您的帮助。

您不需要写:

pictureBoxArray[1].PictureBox.Parent = pictureBoxArray[0].PictureBox
?

这两条线:

pictureBoxArray[1].Parent = pictureBoxArray[0];

pictureBox2.Parent = pictureBox1;
你所说的是不等价的。其中一个是指定图像包装的父对象,另一个是指定图片盒的父对象


我不知道这是否是您如何显示代码或程序本身的错误。

谢谢您,这完全正确!我还不熟悉使用类,我不完全理解它们是如何工作的。你的解决方案解决了这个问题。谢谢你的帮助!