QT5:使用 drawPixMap() 在另一个矩形之上绘制矩形
QT5: Drawing rect on top of another rect using drawPixMap()
我使用 drawPixmap()
正确吗?
本质上,我的目标是拍摄一个 tileset 图像,并用自定义的 tile 图像替换单个 tile。
我可以让两个图像都加载到屏幕上,但是当我调用 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);
要通过 this
初始化 QPainter
,如果您想在某个小部件上绘制它,则必须从小部件 paintEvent(QPaintEvent *)
调用它。因此,在这种情况下,应该从事件处理程序调用 replaceCustomTile()
。
要在另一个像素图上绘制一些像素图 QPainter
应该使用 QPainter::begin()
:
由目标像素图初始化
QPainter painter;
painter.begin(&target);
painter.drawPixmap(rect, custom);
painter.end();
上面的代码在 QPixmap target
上将 QPixmap custom
绘制到给定的 QRect rect
中。 target
被修改。
我使用 drawPixmap()
正确吗?
本质上,我的目标是拍摄一个 tileset 图像,并用自定义的 tile 图像替换单个 tile。
我可以让两个图像都加载到屏幕上,但是当我调用 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);
要通过 this
初始化 QPainter
,如果您想在某个小部件上绘制它,则必须从小部件 paintEvent(QPaintEvent *)
调用它。因此,在这种情况下,应该从事件处理程序调用 replaceCustomTile()
。
要在另一个像素图上绘制一些像素图 QPainter
应该使用 QPainter::begin()
:
QPainter painter;
painter.begin(&target);
painter.drawPixmap(rect, custom);
painter.end();
上面的代码在 QPixmap target
上将 QPixmap custom
绘制到给定的 QRect rect
中。 target
被修改。