关于C#:QGraphicsTextItem的QPixmap

QPixmap of a QGraphicsTextItem

如何将QGraphicsTextItem转换/绘制为QPixmap?


您可以将其添加到QGraphicsScene(如果尚未添加到其中),然后使用QPainter

将场景添加到QPixmap

1
2
3
QPixmap pix(100, 100);
QPainter paint(&pix);
scene.render(&paint);

或者,您可以节省您的麻烦,并在更改画家的当前字体后使用QPainter::drawText()。它应该提供相同的功能。

也许像这样-

1
2
3
QPixmap pix(100, 100);
QPainter paint(&pix);
paint.drawText(0, 0,"Hello World");

QGraphicsTextItem :: document()函数是您要寻找的后门:

1
2
3
4
5
6
// pItem is a QGraphicsTextItem *
QPixmap srcPixmap(pItem->boundingRect().size().toSize());

QPainter tmpPainter(&srcPixmap);
pItem->document()->drawContents(&tmpPainter);
tmpPainter.end()