1

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

整个想法是在可绘制区域内有一个边框,我无法在其中绘制,这样当我从 (0, 0) 到 (10, 10) 绘制一条线时,我实际上是在 (0 + padding, 0 + 填充)到(10 + 填充,10 + 填充)。不过应该可以看到填充边框。

假设 aQPainter 创建为:

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(padding, padding) 现在会是 B 中的 QPoint(0, 0)?

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

谢谢。

4

2 回答 2

2

是的,进行转换将是最好的方法。如果你应用一个变换,那么所有后续的绘制调用都将被那个变换所变换。例如,应用 (5,5) 的平移将使 (0,0) 到 (10,0) 的行变为 (5,5) 到 (15,5)。

QPainter 文档可以在此处找到,如果您在底部附近查看,您将看到一个translate方法。这正是您要寻找的。

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

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

painter.setClipRect(5, 5, originalWidth - 5, originalHeight - 5);
于 2013-09-11T17:35:14.613 回答
1

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

于 2013-09-11T17:47:58.237 回答