2014-03-31 29 views
1

在QML文檔,我發現自定義類型(從C++定義的)的一個例子,以在其上繪製了QPainter繪製QML類型與QPainter的

#include <QtQuick/QQuickPaintedItem> 

class PieChart : public QQuickPaintedItem  
{ 
... 

public: 
    void paint(QPainter *painter); 

... 
}; 

來源:

void PieChart::paint(QPainter *painter) 
{ 
    QPen pen(m_color, 2); 
    painter->setPen(pen); 
    painter->setRenderHints(QPainter::Antialiasing, true); 
    painter->drawPie(boundingRect().adjusted(1, 1, -1, -1), 90 * 16, 290 * 16); 
} 

我怎樣才能派生一個類型來繪製(例如一條線)與QPainter異步? 謝謝!

回答

0

你有多種方式做異步得出:

1)在某些時候繪製你的內容變成QImage(甚至在一個單獨的線程),並在QQuickPaintedItem::paint(),簡單地繪製圖像。

2)使用QtQuick Canvas。請注意,這是使用JavaScript繪製的,而不是C++,但實際上它實際上是QPainter命令。畫布支持各種render strategies等等做圖中的專用線或在渲染線程

0

爲您在QML圖的寬度和高度,通過註冊qmlmetatype 使用更新()在paint( )身體,你可以看到圖表得到更新。