0

我正在开发 VS 2008 中的表单应用程序,并且在重叠两个图像时卡住了。这些图像是透明的,因此它们应该能够混合在一起,但结果如下所示: 在此处输入图像描述

我看过与此类似的帖子,但似乎无法弄清楚为什么这两张图片不能融合在一起。以下是我如何处理的代码:

            InitializeComponent();
        this.Width = 700;
        this.Height = 768;

        Bitmap BackgroundImg = new Bitmap(@"C:\Users\Classic.bmp");
        Bitmap img = new Bitmap(@"C:\Users\Lime.bmp");
        backImage.Image = BackgroundImg;
        backImage.Width = 700;
        backImage.Height = 768;
        backImage.Location = new Point(0, 0);
        overImage.Image = img;
        overImage.Width = img.Width;
        overImage.Height = img.Height;
        overImage.Parent = backImage;
       //overImage.BackColor = Color.Transparent;
        overImage.Location = new Point(200, 200);

backImage 和 overImage 是图片框

4

2 回答 2

2

您的问题出在 overImage.Parent 属性上。PictureBox 支持对其父级的透明度。但是overImage的父级是form,而不是backImage。因此,您将表单视为背景,而不是图像。请注意如何使用表单的 BackgroundImage 属性而不是 backImage 来解决问题。

这是因为 PictureBox 不是 ContainerControl。因此,当您将 overImage 拖放到表单上时,它看起来就像是 backImage 的子控件。不是,设计师将表单设为父级。您可以从 Location 属性和 View + (Other Windows) + Document Outline 窗口中看出。该窗口非常清楚地显示了父子关系。请注意如何尝试拖动 overImage 使其成为 backImage 的子项也不起作用。

可以将 Parent 属性更改为 backImage,您必须在代码中进行

另一个简单的解决方法是根本不使用 PictureBox 控件,而只是使用 e.Graphics.DrawImage() 在表单的 Paint 事件中绘制图像。简单的油漆层,否则 WPF 实现透明度的方式。只需两行代码,也可以让您的 UI 更快。

于 2013-06-25T01:19:49.030 回答
0

我认为您的问题来自位图图像不支持透明度的事实。

尝试使用 .png(例如)并使用以下链接中描述的 SetColorKey 方法:http: //msdn.microsoft.com/en-us/library/e7755txx.aspx

于 2013-06-24T21:28:42.043 回答