2016-11-14 46 views

回答

0

我可以想象,如果你用矩形座標和圖像尺寸足夠擺弄周圍,你可能最終得到這個工作,但它總是會嘗試瓷磚紋理。如果你的矩形改變了形狀,或者你有用戶與它的交互作用,它會讓它變得更加令人沮喪和耗費時間。

我會建議放棄嘗試使用刷爲此。相反,子類QGraphicsRectItem並自己繪製PNG圖像。用於繪製圖像(drawImage)和矩形(drawRect)的QPainter命令非常易於使用,然後您可以完全控制。在繪製PNG後,不要忘記在派生類的paint方法中調用QGraphicsRectItem :: paint。否則,矩形將消失。

你也可以繼承QGraphicsPixmapItem。它將負責繪製PNG文件,然後您必須繪製矩形。或者,你可以繼承QGraphicsItem並自己做所有的繪畫,這也很容易。在我的Qt經驗的早期,我避免了QGraphicsItem的子類化,並專注於使用內置形狀來處理所有事情,因爲我不想深入繪畫調用。這實際上是一個錯誤,並且引入了很多不必要的複雜性,如果我只是創建了自己的圖形項目類,而不是試圖強制內置函數完成我所需的任何操作,我就避免了這些複雜性。 QPainter調用非常簡單而且非常完整,我強烈建議您去探索。

子類化QGraphicsItem而不是QGraphicsRectItem或QGraphicsPixmapItem讓您對繪圖有更多的控制,所以這是我爲您的最終解決方案推薦的例程。但是,如果您想在較小的步驟中進行更改,那麼先從QGraphicsRectItem的子類開始,嘗試一下,然後轉到子類化QGraphicsItem。哪個效果最好取決於您的確切需求。