在Qt中缩放QImage

时间:2012-12-27 13:15:06

标签: c++ image qt scale qimage

将图像绘制为QGraphicsRectItem的背景的最简单方法是什么? 我可以设置背景如下,但我无法缩放图像:

 QGraphicsRectItem *enemyItem;

 QImage *image = new QImage(":/PaperMario.png");

 QBrush *brush = new QBrush(*image);


 enemyItem = new QGraphicsRectItem();
 enemyItem->setBrush(*brush);

 enemyItem->setRect(enemy->getXPos()*30,enemy->getYPos()*30,30,30);
 scene->addItem(enemyItem);

在QGraphicsRectItem内部

void MySquare::setBrush(QColor _color){
    color = _color;
    color_pressed = _color;
    update(); //repaint
}

我尝试过使用:

QBrush *brush = new QBrush(*image->scaled(10));

但是我被困住了:不想编译。 这是这样做的吗?

编辑:

    QImage *image = new QImage(":/PaperMario.png");
    QImage *scaled_image = new QImage(image->scaled(35,35,Qt::KeepAspectRatio));
    QBrush *brush = new QBrush(*scaled_image);

是否绘制它但它仍然在图形中多次显示图像 enter image description here

2 个答案:

答案 0 :(得分:2)

当您在场景中显示图像时(我猜是什么)为什么不使用QGraphicsScene::addPixmap(QPixmap)并使用QPixmap::fromImage ( const QImage & image, Qt::ImageConversionFlags flags = Qt::AutoColor )将图像设置为正确的格式。

答案 1 :(得分:0)

*image->scaled(10)不适用于QImage*。您可以写*image.scaled或(更好)image->scaled