2016-11-14 76 views

回答

0

我可以想象,如果你用矩形坐标和图像尺寸足够摆弄周围,你可能最终得到这个工作,但它总是会尝试瓷砖纹理。如果你的矩形改变了形状,或者你有用户与它的交互作用,它会让它变得更加令人沮丧和耗费时间。

我会建议放弃尝试使用刷为此。相反,子类QGraphicsRectItem并自己绘制PNG图像。用于绘制图像(drawImage)和矩形(drawRect)的QPainter命令非常易于使用,然后您可以完全控制。在绘制PNG后,不要忘记在派生类的paint方法中调用QGraphicsRectItem :: paint。否则,矩形将消失。

你也可以继承QGraphicsPixmapItem。它将负责绘制PNG文件,然后您必须绘制矩形。或者,你可以继承QGraphicsItem并自己做所有的绘画,这也很容易。在我的Qt经验的早期,我避免了QGraphicsItem的子类化,并专注于使用内置形状来处理所有事情,因为我不想深入绘画调用。这实际上是一个错误,并且引入了很多不必要的复杂性,如果我只是创建了自己的图形项目类,而不是试图强制内置函数完成我所需的任何操作,我就避免了这些复杂性。 QPainter调用非常简单而且非常完整,我强烈建议您去探索。

子类化QGraphicsItem而不是QGraphicsRectItem或QGraphicsPixmapItem让您对绘图有更多的控制,所以这是我为您的最终解决方案推荐的例程。但是,如果您想在较小的步骤中进行更改,那么先从QGraphicsRectItem的子类开始,尝试一下,然后转到子类化QGraphicsItem。哪个效果最好取决于您的确切需求。

相关问题