Documentation Documentation
主页
指南
DTK
经验分享
社区作品
关于
  • 简体中文
  • English
  • Español
GitHub (opens new window)

Deepin

Deepin 社区文档
主页
指南
DTK
经验分享
社区作品
关于
  • 简体中文
  • English
  • Español
GitHub (opens new window)
  • Dtk文档总集合
  • 接口changelog
  • UOS-Deepin 中配置 DTK 开发环境
  • Dtk的历史起源、发展,和简单入门
  • Dtkcore提供的单例类DSingleton的用法
  • Dtk自动保存主题
  • 主题相关知识集锦
  • Dtk播放系统音效
  • 如何实现单例进程
  • DSettingsDialog使用json创建对话框及其国际化
  • DLabel的ElideMode
  • Dtkcore的DExportedInterface接口的用途
  • 判断是否社区版、如何显示 Logo 以及获取发行版名称
  • Dtk 前期准备、绘画 Qt 自带控件、创建及绘画自定义控件
  • Dtk 常用、测试代码片
  • 使用 DDesktopEntry 解析 desktop 文件
  • Dtk加载翻译文件
  • Dtk 日志管理
  • Dtk相关配置目录
  • DTK 对 pkg-config 命令的支持
  • DDesktopServices的使用
  • Dtk汉字转拼音
  • 清空回收站
  • DPathBuf拼接路径
  • 如何调用外部程序
  • DAnchors的使用
  • DBlurEffectWidget的使用
    • DBlurEffectWidget 的作用
    • 主窗口模糊(DBlurEffectWidget::BehindWindowBlend)和控件模糊(DBlurEffectWidget::InWindowBlend 、DBlurEffectWidget::InWidgetBlend)
    • DBlurEffectWidget 属性
    • 使用范例
  • 窗口模糊效果
  • Codeanalysis工具的使用
  • 代码格式化脚本pre-commit
  • Qt5 GUI程序界面启动耗时统计工具
  • Scrollbar 设置为上下(左右)不到顶端
  • DAbstractUnitFormatter 单位格式化工具
  • Dtk-translate工具
  • DSettings 工具
  • Deepin-os-release 工具
  • Dlistview DViewItemActionsetwidget 用法
  • DTK问题判定方法
  • 题栏菜单没有「帮助」菜单项
  • DBackgroundGroup 移除一项后,下边的圆角没有刷新
  • 在标题栏拖动鼠标出现无法拖动窗口的问题
  • 锁屏状态下音乐播放控件状态异常
  • 应用图标异常
  • 为什么bug状态为已解决,验证依旧不通过
  • 为何我的标题栏右键菜单的背景色与应用窗口颜色不一致
  • DTK 基础教程:自定义控件规范
  • 制作 dde-control-center 插件
  • DTK
Deepin | Any developer
2020-12-11

DBlurEffectWidget的使用

DBlurEffectWidget的使用

# DBlurEffectWidget 的作用

用于实现主窗口或控件背景的实时模糊效果。


# 主窗口模糊(DBlurEffectWidget::BehindWindowBlend)和控件模糊(DBlurEffectWidget::InWindowBlend 、DBlurEffectWidget::InWidgetBlend)

主窗口模糊:依赖于窗口管理器的实现,目前仅支持 deepin-wm 和 kwin,可以使用DWindowManagerHelper::hasBlurWindow 判断当前运行环境中的窗口管理器是否支持模糊特效,使用 DPlatformWindowHandle::setWindowBlurAreaByWM 设置主窗口背景的模糊区域。如果在一个主窗口内同时使用了多个 DBlurEffectWidget 控件,则在更新主窗口模糊区域时会自动将所有控件的区域合并到 QVector<WMBlurArea> 或者 QList<QPainterPath>(如果有任意一个控件设置了 DBlurEffectWidget::radius 属性)中统一设置。

控件模糊:原理和 DClipEffectWidget 类似,在控件绘制时先使用 QPlatformBackingStore::toImage()获取主窗口上控件对应区域内已经绘制的内容,此时获取的内容为此控件下层控件所绘制的内容,将获得的 QImage 对象使用软件算法进行模糊处理,然后再将模糊之后的图像绘制到控件上。由于实现原理限制,不适用于主窗口为OpenGL绘制模式的窗口(如:QOpenGLWindow ),且控件下面使用OpenGL绘制的内容也生成模糊的效果(如 QOpenGLWidget )。


# DBlurEffectWidget 属性

DBlurEffectWidget::radius 模糊效果计算时的取样范围,模糊的原理为:将此像素点和周围像素点合成计算得到得到新的值,此属性表示像素点周围 radius 距离的所有像素点参与计算。【可读可写,只在模式为 DBlurEffectWidget::InWindowBlend 时有效】

DBlurEffectWidget::mode 所采用的模糊算法,默认值为 GaussianBlur。【可读可写,只在模式为 DBlurEffectWidget::InWindowBlend 时有效】

DBlurEffectWidget::blendMode 模糊的应用场景,默认会根据有没有父控件自动判断使用哪种模式。可读可写,只在模式为 DBlurEffectWidget::InWindowBlend 时有效】

DBlurEffectWidget::maskColor 画在控件模糊背景之上的颜色,此颜色的alpha通道值会被 maskAlpha 属性影响,修改此属性会自动将颜色模式设置为 CustomColor,设置后将不能再自动根据窗口管理器是否支持混成和模糊来自动使用最佳的颜色。

DBlurEffectWidget::maskAlpha maskColor 的alpha通道值。当前窗口管理器支持混成(窗口背景透明)时默认值为102,否则为204。

DBlurEffectWidget::full 如果值为true,将模糊此控件所在顶层窗口的整个背景,而无论控件的大小和位置,否则使用控件的位置和大小。

DBlurEffectWidget::blurEnabled 如果值为 true 则此控件的模糊设置生效,否则不生效。


# 使用范例

DBlurEffectWidget *blurWidget = new DBlurEffectWidget(this);
blurWidget->setRadius(30);
blurWidget->setFixedSize(200, 200);
blurWidget->setBlurRectXRadius(100);
blurWidget->setBlurRectYRadius(100);
blurWidget->setMaskColor(DBlurEffectWidget::LightColor);

QPainterPath clipPath;
clipPath.addRect(0, 50, 200, 150);
blurWidget->setMaskPath(clipPath);
帮助编辑此页 (opens new window)
上次更新: 12/17/2020, 2:23:36 AM
DAnchors的使用
窗口模糊效果

← DAnchors的使用 窗口模糊效果→

Theme by Vdoing | Copyright © 2020-2021 Deepin | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式