一、分層繪制
一直說要講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í)是年輕人改變自己的最好方式