Qt WebKit學習筆記(5)—實戰QWebView—3

來源:互聯網
上載者:User

本篇為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,所以和原有映像的運算結果剛好是按位取反的功能,做到了反色效果。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.