我正确使用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);
答案 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
已修改。