TransparencyKey在圆角背景图像上留下像素

时间:2016-07-21 06:48:59

标签: c# winforms

我试图使用带圆角的背景图像来对抗' lime'将transparencykey设置为' lime'的背景颜色,它主要具有仅在背景图像上显示所有表单控件的效果,但石灰背景不会从圆形边缘周围1px的透明度键中删除:

1px ring left on all 4 corners

有谁知道如何防止这种情况发生?

1 个答案:

答案 0 :(得分:2)

TransparencyKey使用单一颜色。当您使用消除锯齿绘制圆角时,线条颜色将与背景颜色混合,因此您看到的颜色不完全是Lime,它是Lime和{{的混合1}}使圆角更加平滑。因此,当您将Gray设置为TransparencyKey时,不会删除该颜色。

要使用高质量的Alpha混合圆角,请考虑使用Layered Windows。创建一个透明背景的位图,其中包含圆形矩形的平滑绘制,然后使用您可以在下面的帖子中找到的技术,制作您的形状:

  

使用分层窗口可以显着提高性能   具有复杂形状的窗口的视觉效果,使其具有动画效果   形状,或希望使用alpha混合效果。系统   自动编写和重新绘制分层窗口和窗口   基础应用。结果,渲染了分层窗口   平滑,没有复杂窗口区域的典型闪烁。在   另外,分层窗口可以是部分半透明的,即   阿尔法混合。

重要提示

上述技术对于创建简单的启动画面非常有用,但是当您想要对表单进行一些控制时,需要使用变通方法。

除了主窗体之外,您还可以使用Lime样式创建另一个窗口,并使用该窗口显示Alpha混合背景图像。然后我们只需确保此窗口位于主窗体后面。是的,这不是那么容易,但这里有一个库,它使任务变得非常简单。感谢Anthony Mushrow的想法和实施: