zoukankan      html  css  js  c++  java
  • Qt WebKit学习笔记(5)---实战QWebView—3

    本篇为QWebView应用的扩展,除了之前的QWebView相关知识,还涉及到QPainter及QPaintEvent的应用。本篇实现的效果为google map的夜视(night-mode)功能,如下图

    实现night-mode的原理涉及到反色等知识,不过编写起来却十分简单。你可以尝试打开“画图”等图片编辑工具,然后选中反色,得到的效果即我们现在要完成的。

    在QWebView的反色处理上,我们通过重写paintEvent函数实现:

    1.首先调用QWebView的paintEvent方法将我们需要显示的图片(内容)paint好

    2.QPaint提供了反色的接口setCompositionMode。它是一系列图像构成的接口,我们选择QPainter::CompositionMode_Difference实现整个画面的反色效果

    3.设置好反色效果后,调用fillRect方法填充所需变化的区域。

    完整的代码为(paintEvent,省略其他变量定义)

    void webViewClass::paintEvent(QPaintEvent *event)

    {

    QWebView::paintEvent(event);

    if(isNightMode)

    {

    QPainter p(this);

    //p.setBackgroundMode(Qt::OpaqueMode);

    p.setCompositionMode(QPainter::CompositionMode_Difference);

    p.fillRect(event->rect(), Qt::white);

    }

    }

    其中在fillRect中,因为CompositionMode_Difference模式指的是一种异或(xor)运算,因为white的颜色是全1,所以和原有图像的运算结果刚好是按位取反的功能,做到了反色效果。

  • 相关阅读:
    Jenkins 基础篇
    Jenkins 基础篇
    Windows配置Nodejs环境
    Windows配置安装JDK
    Windows安装MySQL
    Ubuntu安装MySQL
    利用中国移动合彩云实现360云盘迁移到百度云
    Linux Shell下的后台运行及其前台的转换
    nova image-list 和 glance image-list 有什么区别
    启动虚拟机时提示我已移动或我已复制选项的详解
  • 原文地址:https://www.cnblogs.com/MingZznet/p/3225333.html
Copyright © 2011-2022 走看看