如何从QImage中裁剪多边形(用多边形图填充)(Qt 4.6)

时间:2010-12-23 11:33:10

标签: c++ visual-studio-2008 qt qt4 qt4.6

OS :: win xp sp3

Qt的:: 4.6

我正在开发基于Qt框架的PUZZLE游戏,需要一些帮助。

在项目中包含需要拆分为较小部分的主图片(图像属于它们的多边形)。因此,我制作了图像QImage image = QImage("someImage.jpg"),并想要在该对象上裁剪图像等操作。

我检查了诺基亚网站上查找成员功能的QImageQPixmap ...文档。类似于裁剪,但发现为零。

需要引用类我必须使用(#include <???>)来解决这个问题,然后我将重新检查在线文档。

3 个答案:

答案 0 :(得分:1)

假设原始图像被称为A.你有一个多边形P.你想要创建一个较小的图像B,它基本上是由P“裁剪”的。以下是步骤:

  • 创建B.要知道大小,只需在P。
  • 上使用QPolygonF :: boundingRect
  • 使用透明色或任何您想要的背景色填充B.
  • 创建适用于B
  • 的新QPainter
  • 将画家剪辑路径设置为P(多边形可以转换为路径),请参阅QPainter :: setClipPath
  • 使用画家绘制A

请注意,如果P的边界矩形不在原点,您可以翻译画家。

答案 1 :(得分:0)

您可以使用QImage的这些成员

QImage  copy ( const QRect & rectangle = QRect() ) const
QImage  copy ( int x, int y, int width, int height ) const

答案 2 :(得分:0)

您应该使用QPixMap:使用它可以将原始图像的全部或部分复制到拼图部分。通过使用透明颜色绘制这些部分,您可以使多边形的外部不可见。或者你使用带有QImage的bitBlt(Qt 3支持成员)来达到同样的效果。