QT5:使用drawPixMap()

时间:2015-10-29 23:01:05

标签: c++ qt qpainter qpixmap

我正确使用drawPixmap()吗?

基本上我的目标是拍摄图块集图像,并用自定义图块图像替换单个图块。

我可以在屏幕上加载两张图片,但是当我拨打drawPixmap()时,原始图片根本不会改变。

提前致谢。

void replaceCustomTile(QPixmap custom, QPixmap target, int whichTile) {
    QRect rect(0, 0 + (squareTileSize * whichTile), squareTileSize, squareTileSize);
    QRect customRect = custom.rect();
    QPainter painter(this);
    painter.drawPixmap(rect, target, customRect);
    painter.end();
}

编辑:

这就是replaceCustomTile的调用方式:

QPixmap terrainTiles(":/static/Terrain.png");
QPixmap customTile(":/static/Smiles.png");
replaceCustomTile(customTile, terrainTiles, 0);

1 个答案:

答案 0 :(得分:1)

要按QPainter初始化this,如果要在某个窗口小部件上绘制,则必须从窗口小部件paintEvent(QPaintEvent *)调用它。因此,在这种情况下,应该从事件处理程序中调用replaceCustomTile()

要在另一个像素图之上绘制一些像素图QPainter应该使用QPainter::begin()由目标像素图初始化:

QPainter painter;
painter.begin(&target);
painter.drawPixmap(rect, custom);
painter.end();

以上代码将QPixmap custom绘制到QRect rect以上的QPixmap target上。 target已修改。