-2

将图像绘制为背景的最简单方法是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);

确实绘制了它,但它仍然在绘图中多次显示图像 在此处输入图像描述

4

2 回答 2

2

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

于 2013-01-01T19:27:39.463 回答
0

*image->scaled(10)不适用于QImage*. 要么你写*image.scaled,要么(更好)image->scaled

于 2012-12-27T13:22:28.307 回答