【问题标题】:Image filtering of QGraphicsView's background through foreground QGraphicsItems通过前景QGraphicsItems对QGraphicsView的背景进行图像过滤
【发布时间】:2012-05-29 09:34:21
【问题描述】:

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

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

提前致谢!

【问题讨论】:

    标签: qt qt4 pyqt pyqt4


    【解决方案1】:

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

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

    如果背景不是静态的,那么如果不重用drawBackground方法的代码或者在一张图片上绘制背景,然后用这张图片来绘制实际的背景+每个item的效果,就不可能了。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-28
      • 1970-01-01
      相关资源
      最近更新 更多