怎么画边框QGraphicsItem
?简单painter->drawRect( boundingRect() )
的重载绘制方法是不正确的(右下角在项目之外)。
问问题
5655 次
4 回答
4
图形和绘图形状的坐标系可能很难直截了当。您经常会发现自己编写测试图以使其正确,但它正在精确地绘制您告诉它绘制的内容。您需要了解坐标系。在此页面上,请特别注意“一像素宽笔”的图片QRectF
。
于 2011-07-08T22:22:29.083 回答
4
请注意,QPainter::drawRect()的文档提到了实际宽度:
填充矩形的大小为 rectangle.size()。描边矩形的大小为 rectangle.size() 加上笔宽。
鉴于此,我想您会想要一些比仅使用边界矩形更复杂的东西:
QRect r = boundingRect();
QPen p = painter->pen();
painter->drawRect(QRect(r.x(), r.y(), r.width()-p.width(), r.height()-p.width()));
于 2011-07-08T22:53:43.470 回答
2
QGraphicsEffect可能是你的朋友。您可以将其子类化以在任意 QGraphicsItem 周围绘制边框。只需记住重新实现boundingRectFor()
以包含额外的边框。
于 2011-07-08T22:19:24.417 回答
0
我发现了我的问题。感谢所有建议,但现在我明白了,我的问题出在其他地方。
我可以绘制一个QRectF()
适合我项目的 boundingRect 的 ,但是......当我缩放我的QGraphicsView
(无论我使用fitInView()
方法还是我自己的实现)时,显示我的边框时会出现一些错误。
很少有一两行矩形比其他行更紧。我认为它可能与我QGraphicsItem
的s有关,它们同时也是QGraphicsSvgItem
s。
于 2011-07-09T22:56:22.797 回答