qgraphicsitem的Qpaint中笔集的Qtransform比例和宽度
Qtransform scale and width of pen set in Qpaint of qgraphicsitem
你好朋友,我正在使用 setTransform
-QGraphicsItem
的方法调整和旋转 QGraphicsItem
,我正在 paint
中绘制任何形状的 QGraphicsItem
- 方法,当我使用 setTransform
方法缩放项目时,QGraphicsItem
的边框也会变厚,并且我将名称设置为 QGraphicsItem
,它也会根据缩放因子变大。那么有什么方法可以让我在绘画方法中使用 drawtext
绘制项目的边框和名称,保持与我指定的笔宽相同。
你需要用pen.setCosmetic(true)
制作一支装饰笔,然后用这支笔画边框。装饰笔的宽度不依赖于应用的变换。
我推荐使用QGraphicsSimpleTextItem
或QGraphicsTextItem
在场景中绘制文字。您可以通过调用 textItem->setFlag(QGraphicsItem::ItemIgnoresTransformations);
来禁用文本转换。使主图形项成为文本项的父项可能很方便,这样文本项相对于主项定位。
请注意,在大多数情况下不需要重新实现 QGraphicsItem::paint
,因为内置的 QGraphicsItem
子类可以满足各种需求。
你好朋友,我正在使用 setTransform
-QGraphicsItem
的方法调整和旋转 QGraphicsItem
,我正在 paint
中绘制任何形状的 QGraphicsItem
- 方法,当我使用 setTransform
方法缩放项目时,QGraphicsItem
的边框也会变厚,并且我将名称设置为 QGraphicsItem
,它也会根据缩放因子变大。那么有什么方法可以让我在绘画方法中使用 drawtext
绘制项目的边框和名称,保持与我指定的笔宽相同。
你需要用pen.setCosmetic(true)
制作一支装饰笔,然后用这支笔画边框。装饰笔的宽度不依赖于应用的变换。
我推荐使用QGraphicsSimpleTextItem
或QGraphicsTextItem
在场景中绘制文字。您可以通过调用 textItem->setFlag(QGraphicsItem::ItemIgnoresTransformations);
来禁用文本转换。使主图形项成为文本项的父项可能很方便,这样文本项相对于主项定位。
请注意,在大多数情况下不需要重新实现 QGraphicsItem::paint
,因为内置的 QGraphicsItem
子类可以满足各种需求。