一、分層繪制

    一直說要講2.0.0版本,但總是想把1.3.2版本拿出來比較一下,這篇文章也不例外。QCustomPlot2.0.0beta版本比1.3.2release版本有一個很大的改進那就是分層繪制,所謂分層繪制就是把一張圖分幾張圖來繪制,最后在把這分開的幾張圖統(tǒng)一繪制到一張圖上,比如一張圖A,需要分開成3張圖B、C和D來繪制,當圖A需要重新繪制時,我們一次判斷B、C和D是否需要重新繪制,如果不需要繪制的我們直接把圖貼到A上,那就很大的減少了重新繪制的時間,而這部分時間其實是沒有必要花費的。

回到頂部

二、QCustomPlot的層

    QCustomPlot默認提供了6個層,如下代碼所示,分別是:背景層、網(wǎng)格層、主層、坐標軸層、圖例層和矩形選擇區(qū)域?qū)印?/p>

1 mLayers.append(new QCPLayer(this, QLatin1String("background")));2 mLayers.append(new QCPLayer(this, QLatin1String("grid")));3 mLayers.append(new QCPLayer(this, QLatin1String("main")));4 mLayers.append(new QCPLayer(this, QLatin1String("axes")));5 mLayers.append(new QCPLayer(this, QLatin1String("legend")));6 mLayers.append(new QCPLayer(this, QLatin1String("overlay")));
  • 背景層:繪制背景圖

  • 網(wǎng)格層:繪制網(wǎng)格線,每一個坐標軸對應(yīng)一個網(wǎng)格對象

  • 主層:繪制圖表

  • 坐標軸層:繪制坐標軸

  • 圖例層:繪制圖例

  • overlay層:繪制最上層的東西,這一層在1.3.2版本時沒有。鼠標選擇矩形框在此層繪制??梢詤⒖?a class="postTitle2" style="color: rgb(70, 70, 70); text-decoration: none;">QCustomplot使用分享(五) 布局文章中圖1

    實現(xiàn)分層繪制的關(guān)鍵類QCPAbstractPaintBuffer,這是一個抽象基類,通過該類可以拿到一個QCPPainter指針,然后繪制東西的時候,都會繪制在這個指針所指的繪圖設(shè)備上。QCPAbstractPaintBuffer類一共有3個子類,分別是QCPPaintBufferPixmap、QCPPaintBufferGlPbuffer和QCPPaintBufferGlFbo,這3個類分別使用了不同繪圖技術(shù)來實現(xiàn)分層繪制。默認使用的是QCPPaintBufferPixmap來繪制,如果想使用QCPPaintBufferGlPbuffer或者QCPPaintBufferGlFbo來繪制,首先要使用setOpenGl接口打開使用opengl開關(guān),然后定義QCP_OPENGL_FBO宏來默認使用QCPPaintBufferGlFbo繪制,或者定義QCP_OPENGL_PBUFFER宏來讓默認使用QCPPaintBufferGlPbuffer方式繪制

延伸閱讀

學(xué)習(xí)是年輕人改變自己的最好方式-Java培訓(xùn),做最負責任的教育,學(xué)習(xí)改變命運,軟件學(xué)習(xí),再就業(yè),大學(xué)生如何就業(yè),幫大學(xué)生找到好工作,lphotoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)學(xué)習(xí)是年輕人改變自己的最好方式