1

可能重复:
使用 C# WinForms 的透明图像

我正在编写一个应用程序,该应用程序将具有No Border. 它还将有一个BackgroundImage[ 将显示为幻灯片;用计时器改变]。

示例图像 [您可能需要下载此文件以体验透明度]:

图片

我尝试了以下两种方法来完成此操作:

  • 使用WindowsFormsApplication

    我使用了TransparencyKey属性Form以及设置相同的Background颜色。[我使用了Fuchsia]。现在边框中的一些像素有了颜色Fuchsia

  • 使用WindowsPresentationFoundation

    我使用了AllowsTransparency并将Window设置Background为 Image 并且图像以透明度正确显示。现在我必须在某个点添加另一个图像 [通过设置边距] 我之前在 Paint 中提到过。 例如:我从原始背景裁剪图像,然后通过设置前面提到的边距将其放置在表单中的正确位置。 但这会导致设置错误的边距!

    更新 :

    在 WPF 中,如果我BackgroundImage在 Grid 中使用 ,它可以解决边距问题,但 Transparency 不起作用并使透明区域变白!

请给出一些提示以摆脱这个问题!

4

2 回答 2

3

这是图像引起的问题。当您将其加载到 Paint.NET 并放大时,您可以看到它,这样您就可以看到各个像素。左上角看起来像这样:

在此处输入图像描述

请注意边缘上的像素是如何部分透明的。因此,如果您在例如紫红色的背景上绘制此图像,那么这些边缘像素不再是灰色的,它们与背景混合并产生不同的颜色。不再与 TransparencyKey 匹配,因此视频适配器不会过滤它们。你会看到它们是各种洋红色的边缘。

您需要编辑图像以使其具有“硬”边缘而没有任何透明度。

于 2012-06-12T10:07:06.133 回答
0

在 WPF 窗口中:

窗口样式=无

AllowsTransparency=True

背景=透明

然后用你的内容放一张图片不行吗?

于 2012-06-12T08:54:56.273 回答