QPainter:添加填充

时间:2013-09-11 17:27:17

标签: c++ qt

有没有办法轻松添加填充到QPainter区域?

整个想法是在可绘制区域内有一个边框,在那里我无法绘制,所以当我从(0,0)到(10,10)绘制一条线时,我实际上正在绘制(0 +填充,0 +填充)到(10 +填充,10 +填充)。应该看到填充边框。

假设QPainter创建为:

QPainter painter(aWidget); // aWIdget is a Widget*

padding整数变量。现在让我们将小部件可绘制的区域视为“A”。我怎样才能得到一个可绘制区域“B”,以便B有:

B_width = A_width - 2 * padding;
B_height = A_height - 2 * padding;

在A中的QPoint(填充,填充)现在将在B中的QPoint(0,0)?

我开始用自己的方式实现它(这会很痛苦),但我想知道在Qt中是否有更容易和“预制”的方式来实现这一点?也许转型?

感谢。

2 个答案:

答案 0 :(得分:1)

是的,进行转换是最好的方法。如果应用转换,则所有后续绘制调用将由该转换进行转换。例如,应用(5,5)的转换将使(0,0)到(10,0)的行变为(5,5)到(15,5)。

可以找到QPainter文档here,如果您查看底部附近,您会看到translate方法。这正是你要找的东西。

painter.translate(5, 5); // that should do it

编辑: 要允许绘制调用仅编辑曲面的特定部分,请使用QPainter的setClipRect方法。

painter.setClipRect(5, 5, originalWidth - 5, originalHeight - 5);

答案 1 :(得分:0)

您也可以设置窗口区域。如果您查看QPainter的文档,您将看到两个有趣的方法:setWindow(可以将可打印区域转换为自定义坐标)和setViewport(可用于将可打印区域限制为给定的rect)。