表单与自定义边框和透明背景

时间:2012-06-12 08:51:38

标签: c# wpf winforms transparency

  

可能重复:
  Transparent images with C# WinForms

我正在编写一个有No Border的应用。它还会有BackgroundImage [显示为幻灯片;用计时器改变了。

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

Image

我尝试了以下两种方法来实现这一目标:

  • 使用WindowsFormsApplication

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

  • 使用Fuchsia

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

    更新:

    在WPF中,如果我在网格中使用Window,它会解决边距问题,但透明度不起作用并使透明区域变白!

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

2 个答案:

答案 0 :(得分:3)

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

enter image description here

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

您需要编辑图片,以便为其提供一个“硬”的图像。没有任何透明度的边缘。

答案 1 :(得分:0)

在WPF窗口中:

WindowStyle =无

AllowsTransparency =真

背景=透明

然后用你的内容放一张图片不起作用?