只在内/外抚摸一条路径?

Phr*_*ogz 4 qt qpainter

鉴于QPainterPath我如何仅在路径的内侧或外侧边缘(或非闭合路径的左侧或右侧)描边路径?

QPainter::strokePath()使笔沿着路径居中并使相同数量的墨水落在两侧.有关所需效果的可视示例,请参阅我制作的图形(对于SVG提议,不是功能):

SVG提出了来自phrogz.net/SVG/stroke-location.svg的笔画位置示例

我不介意这是通过一些黑客来完成的,例如将路径本身设置为剪辑区域(用于内部)或反剪辑区域(用于外部).

这里的目标是填充一个带有低不透明度填充的圆角矩形,然后在具有较低不透明度笔划的外部进行描边,以模拟两步"模糊"衰减.如果笔划与填充重叠,则不透明度加倍,破坏效果.由于形状复杂,路径的简单缩放不会很好,即使它可能适用于上面绘制的圆和矩形.

Ste*_*Chu 6

你最好的选择可能就是QPainterPathStroker.用它来创建一条路径轮廓的新路径.然后使用QPainterPath操作,如两者之间的交集或减法:

outsidePath = strokedPath.subtracted(originalPath);
insidePath = strokedPath.intersected(originalPath);
Run Code Online (Sandbox Code Playgroud)