【问题标题】:Advanced transparency in a form表单中的高级透明度
【发布时间】:2011-01-21 19:29:43
【问题描述】:

我正在寻找一种方法来创建与以下两个样式相似的表单..

我玩过透明键、windows API,但在 Windows 窗体中没有成功做到这一点。

http://onenetworks.us/ONEmessenger&center.jpg

我在这篇文章中寻找的是对解释如何做到这一点的文章或一些代码示例的任何引用。 - 但我会接受任何类型的输入。

如果没有如此可怕的 alpha 混合问题,我会使用 Windows Vista/7 Areo glass。

【问题讨论】:

  • 这些所谓的“阿尔法混合问题”是否可能实际上是由于您缺乏理解而不是Windows代码库中的致命缺陷?
  • @David:很有可能。但我遇到了一些问题,做了一些研究,发现在一篇文章中有人暗示 WinForms 存在一些 alpha 混合问题,这是有道理的,所以我只是假设......

标签: c# winforms transparency


【解决方案1】:

我想你想调整表单的Opacity

参见this 示例

【讨论】:

  • 虽然会改变整个表单
  • 叹息,这显然是正确的答案。基本窗口的标题栏清楚地显示了不透明的迹象。上面还有另一个使用 TransparencyKey 的顶级无边框窗口。允许使用 alpha 画笔绘制不透明和部分透明的图形。 Winforms 没有问题。
【解决方案2】:

您可以告诉 DWM 扩展​​窗口的“玻璃”区域。 参见this article中的图10

或者,通过使用 DirectX,您可以获得this effect。但是,不要认为您可以使用 winforms。

【讨论】:

  • 我意识到,但这有一些主要的 alpha 混合问题 iirc。
  • @Tommy:抱歉,现在我看到您已经了解 glass API。请检查我添加的链接。
  • 看起来很有趣 - 将研究它是否很快与 .net 集成..
【解决方案3】:

有关如何找到在分层窗口上显示 Windows 标准控件的方法的文章,请参阅下面的链接。它提供了 Native MFC 和 WinForms 源代码。

Cool, Semi-transparent and Shaped Dialogs with Standard Controls for Windows 2000 and Above

在 WinForms/.NET 中使用代码

第一步:

将 /Src/. 目录中的文件复制到您的项目中。

第二步

您需要一个图像文件作为对话框背景。你最好 选择支持 alpha 通道的 PNG 或 TIFF。

最后一步

将对话框基类从Form 替换为ImageDlgBase

public partial class Form2 : CoolImageDlg.ImageDlgBase {
    public Form2()
    {
        base.DlgBgImg = ImgDlgSample.Properties.Resources.DemoDlgBg2;
        //......
     } 
}

查看文章中的示例代码。

【讨论】:

猜你喜欢
  • 2014-09-14
  • 1970-01-01
  • 1970-01-01
  • 2013-01-17
  • 2011-12-04
  • 1970-01-01
  • 1970-01-01
  • 2016-05-12
  • 1970-01-01
相关资源
最近更新 更多