标签: aero-glass

与CSS的背景迷离

我想在我的网站上弹出一个Vista/7-aero-glass风格的效果,它需要是动态的.我很好,这不是一个跨浏览器的效果,只要该网站仍适用于所有现代浏览器.

我的第一次尝试是使用类似的东西

#dialog_base {
  background:white;
  background:rgba(255,255,255,0.8);

  filter:blur(4px);
  -o-filter:blur(4px);
  -ms-filter:blur(4px);
  -moz-filter:blur(4px);
  -webkit-filter:blur(4px);
}
Run Code Online (Sandbox Code Playgroud)

但是,正如我所料,这导致对话框的内容模糊,背景保持清晰.有没有办法使用CSS来模糊半透明元素的背景而不是其内容?

css popup aero-glass

46
推荐指数
4
解决办法
12万
查看次数

Aero:如何在玻璃上绘制实心(不透明)颜色?

使用GDI +绘制各种颜色:

brush = new SolidBrush(color);
graphics.FillRectangle(brush, x, y, width, height);
Run Code Online (Sandbox Code Playgroud)

您会注意到在玻璃上没有显示不透明的颜色: 替代文字

我如何在玻璃上画出纯色?


您还会注意到完全不透明的颜色会根据颜色的不同而有所不同:

  • 不透明的黑色:完全透明
  • 不透明的颜色:部分透明
  • 不透明的白色:完全不透明

替代文字

有人能指出我在桌面合成器上的文档,解释了如何处理不同的颜色?


更新3

您还会注意到FillRectangle行为与以下不同FillEllipse:

  • FillEllipse 不透明的颜色会产生不透明的颜色
  • FillRectangle 不透明的颜色部分(或完全)透明

替代文字

请解释非感性行为.

更新4

Alwayslearning建议我改变合成模式.来自MSDN:

CompositingMode枚举

CompositingMode枚举指定如何呈现的颜色与背景颜色组合.此枚举由使用Graphics::GetCompositingMode"图形:: SetCompositingMode"的方法图形类.

CompositingModeSourceOver
Run Code Online (Sandbox Code Playgroud)

指定在渲染颜色时,它与背景颜色混合.混合由要渲染的颜色的alpha分量确定.

CompositingModeSourceCopy
Run Code Online (Sandbox Code Playgroud)

指定在渲染颜色时,它会覆盖背景颜色.此模式不能与TextRenderingHintClearTypeGridFit一起使用.

从描述来看CompositingModeSourceCopy,听起来这不是我想要的选择.从它所施加的限制来看,它听起来像我想要的选项.并且通过禁用合成或透明度,它不是我想要的选项,因为它执行SourceCopy而不是SourceBlend:

替代文字

幸运的是,这不是一个我必须考虑的邪恶,因为它不能解决我的实际问题.构建我的graphics对象后,我尝试更改合成模式:

graphics = new Graphics(hDC);
graphics.SetCompositingMode(CompositingModeSourceCopy); //CompositingModeSourceCopy = 1
Run Code Online (Sandbox Code Playgroud)

结果对输出没有影响:

替代文字

笔记

  • Win32原生
  • 不是.NET(原生)
  • 不是Winforms(原生)
  • GDI +( …

aero dwm aero-glass

31
推荐指数
1
解决办法
3617
查看次数

Qt:擦除背景(Windows Aero Glass)

更新

有关使用Qt和DWM的示例,请参阅在Windows上使用Blur Behind.替代文字http://labs.trolltech.com/blogs/wp-content/uploads/2009/09/blurbehind2.png


原始问题:

我想用Qt创建一个Windows Aero Glass窗口,现在它看起来像这样: 替代文字

但在调用一些my_window->repaint()我的窗口后,标签就会破碎: 替代文字

但现在,如果我稍微调整窗口大小,它会重新正确重新绘制.


问题是:如何擦除窗口背景,以便小部件在干净的玻璃上绘画?


重现问题的简短代码是(Vista with Aero):

class Window(QWidget):
    def __init__(self, *args):
        QWidget.__init__(self, *args)
        self.setLayout(QVBoxLayout())
        self.layout().addWidget(QLabel("This is the text"))

        # let the whole window be a glass
        self.setAttribute(Qt.WA_NoSystemBackground)
        from ctypes import windll, c_int, byref
        windll.dwmapi.DwmExtendFrameIntoClientArea(c_int(self.winId()), byref(c_int(-1)))
    def mousePressEvent(self, event):
        self.repaint()
Run Code Online (Sandbox Code Playgroud)

您可以立即单击该窗口,也可以单击Alt-Tab几次.

无论如何,使用带有Aero Glass的标签并不是我所需要的,因为QLabel不知道如何用一缕光线(如窗口的标题)来绘制自己.我需要的是清洁"玻璃"的一般方法.

pyqt dwm windows-vista aero-glass

20
推荐指数
1
解决办法
8002
查看次数

如何在Windows 10上设置玻璃混合颜色?

在Windows 10上使用未记录的SetWindowCompositionAttributeAPI,可以为窗口启用玻璃.玻璃是白色或透明的,如截图所示:

在此输入图像描述

但是,Windows 10"开始"菜单和通知中心(均使用玻璃)都与强调色混合,如下所示:

在此输入图像描述

它是如何做到的?

调查

以下示例中的重点颜色为浅紫色 - 这是设置应用程序中的屏幕截图:

在此输入图像描述

此示例代码中定义AccentPolicy结构具有重音状态,标志和渐变颜色字段:

  AccentPolicy = packed record
    AccentState: Integer;
    AccentFlags: Integer;
    GradientColor: Integer;
    AnimationId: Integer;
  end;
Run Code Online (Sandbox Code Playgroud)

并且州可以具有以下任何值:

  ACCENT_ENABLE_GRADIENT = 1;
  ACCENT_ENABLE_TRANSPARENTGRADIENT = 2;
  ACCENT_ENABLE_BLURBEHIND = 3;
Run Code Online (Sandbox Code Playgroud)

请注意,前两个是在这个github gist上找到的.

第三个工作正常 - 这使玻璃.其他两个,

  • 无论背后是什么,ACCENT_ENABLE_GRADIENT都会产生一个完全灰色的窗口.没有透明度或玻璃效果,但绘制的窗口颜色是由DWM绘制的,而不是由应用程序绘制的.

在此输入图像描述

  • ACCENT_ENABLE_TRANSPARENTGRADIENT导致窗口完全涂上强调色,无论其背后是什么.没有透明度或玻璃效果,但绘制的窗口颜色是由DWM绘制的,而不是由应用程序绘制的.

在此输入图像描述

所以这就越来越近了,它似乎是像音量控制小程序一样使用的一些弹出窗口.

这些值不能一起排序,并且GradientColor字段的值除了必须为非零之外没有任何效果.

直接在玻璃窗口上绘图会导致非常奇怪的混合.这里用红色填充客户区(ABGR格式为0x000000FF):

在此输入图像描述

任何非零的alpha,例如0xAA0000FF,都不会产生任何颜色:

在此输入图像描述

既不匹配"开始"菜单或通知区域的外观.

这些窗户是如何做到的?

winapi aero dwm aero-glass windows-10

20
推荐指数
3
解决办法
1万
查看次数

用于在所有Win32程序员的Windows Aero Glass(DWM,GDI,GDI +)上绘图的文档和API示例

我正在寻找学习使用Win32/GDI API的好资源,或者使用Win32 API直接绘制和绘制到玻璃表格的任何东西.

当我使用Delphi时,我将其标记为Delphi或Visual C++.您可以找到任何代码示例和文章,我们将不胜感激.MSDN文章似乎没有写到这一点.

作为一个目标,让我们想象你想要:(a)重现谷歌Chrome的功能(标签作为玻璃框架的一部分)(b)重现MS Office 2010的功能(保存在MFC上的玻璃框架上的按钮VS 2010,作为"快速访问工具栏"(见下图).

我没有使用MFC,但如果检查MFC源是一个很好的信息来源,我很想知道在MFC源或BCG原始源(我有两者)中的哪些地方实现了快速访问工具栏渲染/绘制代码.

替代文字

更新:以下答案之一的相关neato链接显示NC(非客户端)Paint消息,以及如何在玻璃框架上绘制时处理它,以及此处的MSDN文章.

windows delphi visual-c++ windows-7 aero-glass

18
推荐指数
3
解决办法
5938
查看次数

德尔福切割玻璃

我正在使用Delphi XE2,我喜欢玻璃效果,我想在Windows 7平板电脑工具中"切割"玻璃.如果你也知道如何切一个按钮,如果你告诉我如何,我会很高兴.

在此输入图像描述

谢谢

delphi aero-glass

18
推荐指数
1
解决办法
1301
查看次数

Delphi中的Google Chrome风格标签

我正在尝试在Windows 7中的Delphi应用程序中实现Google Chrome样式选项卡.

这个元素是:

  • 标签可以像谷歌浏览器本身一样延伸到非客户区域.
  • 启用玻璃时,在Vista和Windows 7上正确绘制
  • 标签工作就像谷歌浏览器一样,看起来像谷歌铬,玻璃.

在此输入图像描述

我发现我必须克服的挑战是:

  • 如何将控件(VCL控件)扩展到非客户端区域?(执行此操作的控件的一个很好的示例是VCL源中包含的Ribbon控件,但我没有看到任何其他人这样做,并且需要一些邪恶的黑客才能使功能区运行)
  • 如何在玻璃上正确绘制位图?(DWM API).一个相关的问题已经回答了这方面,在这里,我也问过这个问题.

delphi dwm tabbed-interface aero-glass

16
推荐指数
3
解决办法
6408
查看次数

在流星线索应用程序iOS 9上的全局禁用放大镜

iOS9_glass

我已经测试了几种解决方法,用css禁用恼人的放大镜,但是在我的iOS9流星线上构建它会出现一段时间并在几毫秒之后淡出.

它正在iOS 8上运行,但现在没有在iOS 9上使用这个css代码:

body, body * {
    -webkit-user-select: none !important;
    user-select: none !important;
    -webkit-user-callout: none !important;
    -webkit-touch-callout: none !important;
}
input, textarea {
    -webkit-user-select: text !important;
    user-select: text !important;
    -webkit-user-callout: default !important;
    -webkit-touch-callout: default !important;
}
*{
    -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
    -webkit-touch-callout: none;
    -webkit-user-select: none;
    -moz-user-select: none; /* Firefox all */
    -ms-user-select: none; /* IE 10+ */
    user-select: none;
    -webkit-user-drag: none;
    -webkit-user-modify: none;
}
Run Code Online (Sandbox Code Playgroud)

我错过了iOS 9的东西?

css loupe aero-glass cordova meteor

14
推荐指数
2
解决办法
3640
查看次数

如何绘制自定义标题栏,如雅虎信使11

如你所见,Y!信使11使用了一些技巧来绘制一个漂亮的标题栏.它的窗口就像Win 7中的普通窗口一样,但有一个特殊的标题.这是一个玻璃框架吗?我该如何创建一个这样的?

在此输入图像描述

delphi caption draw aero-glass

13
推荐指数
1
解决办法
2227
查看次数

如何使用不同的Aero玻璃框架创建窗口?

我认为有一个自定义的窗口样式Windows 7.像这样 :

在此输入图像描述 在此输入图像描述

正如您所看到的,它与普通风格不同:

在此输入图像描述

如何创建一个具有您在第一张图片中可以看到的样式的窗口?

delphi coding-style window windows-7 aero-glass

12
推荐指数
2
解决办法
4888
查看次数