通过前景QGraphicsItems对QGraphicsView的背景进行图像过滤

时间:2012-05-22 20:32:32

标签: qt qt4 pyqt pyqt4

我的QGraphicsView的背景是通过重载.drawBackground(...)并调用painter.drawImage(...)来设置的。我继续将前景对象添加到关联的QGraphicsScene。这些主要是QGraphicsRectItem类型。我希望这些前景矩形中的每一个都将图像滤镜应用到它们所覆盖的背景的子图像。

  • 这可能吗?
  • 如果是这样,我在哪里可以找到一些示例代码来帮我入门?谷歌搜索往往只会出现事件过滤的代码。

提前致谢!

1 个答案:

答案 0 :(得分:0)

如果您的背景是静态的,则可以在(自定义)项类的paintEvents中使用此静态图像。但据我所知,你不能使用Qt的项目效果,但需要在paintEvents中自己实现过滤器。请记住从滤镜的图像中裁剪出正确的区域。

在某些情况下,您甚至不需要背景图像。例如,如果要反转项目所覆盖的背景图像,只需填充项目的paintEvent中的整个区域,但在适当地设置图形之前设置画家的合成模式。 (有关可用模式,请参阅QPainter::CompositionMode。)

如果背景不是静态的,则不能重复使用drawBackground方法的代码或在图像上绘制背景,然后使用此图像为每个项目中的效果绘制实际背景+。

要获得更具体的答案,您应该提供有关项目背景和过滤器的更多信息。