QPainter保存與恢復:save與restore函數淺析


在Qt中進行圖像繪制,需要用到QPainter對象,這個對象可以幫助我們完成一些簡單功能的繪制,比如說繪制線條,繪制折線等簡單的繪制功能。

QPainter對象,有兩個很有意思的函數,這兩個函數相互之間起作用,下面,我們就來看一下這兩個函數,save函數與restore函數。

    painter->save();//保存當前Painter狀態
        transform.translate(m_point.x(), m_point.y());
        //沿着x坐標系移動第一個變量,沿着y坐標系移動第二個變量
        transform.rotate(-m_realAngle);
        //繞軸逆時針旋轉變量的角度
        transform.translate(-m_point.x(), -m_point.y());
        //和上面移動相反,返回原先的移動
        painter->setTransform(transform, true);
        //第二個變量為true,故合並指定的變換與現在的變換
        painter->setPen(pen);//設置畫筆
        painter->setBrush(brush);//設置畫刷
        painter->drawPolygon(polygon);//將向量導入,繪制折線
    painter->restore();//恢復上面保存的狀態

在這里的圖像繪制,調用了這兩個函數,在一開始,調用save函數,保存此時QPainter對象的狀態,然后,下面開始進行一系列圖像繪制,程序中寫下了注釋,大家可以參考,這只是程序里的一小片段。而在繪圖結束,再調用restore函數,這里的作用是恢復QPainter對象的狀態為之前保存時候的狀態。

在繪制復雜圖形時候,我們常用這個功能,來保證圖形的正確繪制,不因為多次變換QPainter屬性導致繪圖錯誤,只需要調用這一組函數,就能實現QPainter狀態的存儲與在此使用。

以上,給大家以參考,各位加油呀。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM