gpt4 book ai didi

c++ - QPainter : adding padding

转载 作者:行者123 更新时间:2023-11-30 02:52:35 25 4
gpt4 key购买 nike

有没有办法轻松地向 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(padding, padding) 现在会在 B 中的 QPoint(0, 0) 处发生什么?

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

谢谢。

最佳答案

是的,进行转换是最好的方法。如果您应用了一个转换,那么所有后续的绘制调用都将被该转换所转换。例如,应用 (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);

关于c++ - QPainter : adding padding,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18747608/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com