打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Qt WebKit学习笔记(5)---实战QWebView—3

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

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

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

1.首先调用QWebViewpaintEvent方法将我们需要显示的图片(内容)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,所以和原有图像的运算结果刚好是按位取反的功能,做到了反色效果。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
QT简单绘图的坐标系统
在Qt5.4中如何实现QOpenGLWidget和QPainter混合编程
Qt的四个常见的图像叠加模式
Qt 显示图片 放大 缩小 移动
QT中使用QPainter在ui子控件中绘图
QT4中QPainter的使用及矩形、圆形等常见图形的画法
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服