问题标签 [qpainterpath]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 打印时 QPainterPath 文本呈现错误
在 Qt 5.4.2 中,我使用 aQPainterPath
来呈现文本,因为文本可能被分割成字符并且每个字符都沿着曲线呈现。我在不同平台和打印时看到不同的结果。为了呈现文本,我尝试使用QPainter
'sdrawPath()
和drawPolygon()
方法。
OS X 10.11.6:
drawPath
: 印度文字的第一行有不应该存在的空白,无论是在 a 中QGraphicsView
还是在我打印时。drawPolygon
:顶线是实心的,无论是在 a 中QGraphicsView
还是在我打印时。但是,在打印时,我会在文本中的各个随机点之间得到很多额外的细线。
窗口 7:
drawPath
QGraphicsView
: 和 Mac 上的一样:在我打印时,顶行有间隙。drawPolygon
:QGraphicsView
是正确的(没有间隙),但打印仍然在顶行有间隙,尽管它没有像在 Mac 上打印时那样的超细线条。因此,使用打印drawPolygon
会产生与使用打印相同的错误输出drawPath
。
这是一个演示这些问题的示例应用程序。QGraphicsItem
这是我的示例应用程序中子类的绘制代码:
下面是创建场景并将我的两个QGraphicsItem
子类对象添加到场景的示例应用程序的代码:
如何使 a 中呈现的内容QGraphicsView
和打印的内容相同且正确?如果 OS X 和 Windows 需要不同的解决方案,没关系。或者如果需要更新版本的 Qt 来解决这个问题,我可以升级 Qt。
更新:
正如 Kuba Ober 所建议的,我在下面这个简单的应用程序中演示了打印错误。我不知道如何从这里开始。
c++ - 如何在QT中绘制一条穿过多个点的平滑曲线?
有没有办法通过 QT 中的一组点绘制一条平滑线?点的数量和位置在运行时设置。
目前,我绘制了一个 QPainterPath,其中包含 lineTo 从点到点的路径,创建了一条路径。我确实使用了渲染提示抗锯齿,但路径仍然是锯齿状的。
我见过 QSplineSeries 似乎提供了这种弯曲的路径,但它在 Qt4.8 中不可用,这是我正在使用的 QT 版本。
经常建议的另一个选项是使用贝塞尔曲线,但那些使用一个起点和终点以及两个控制点,所以我需要为每个段(每个 lineTo)计算它并以某种方式计算我没有的那些控制点眼下。
c++ - Qt中重叠多边形的透明度
有没有一种简单的方法可以使两个多边形之间的重叠区域透明?最好是 Qt 小部件/Qt 2D 图形C++框架内的内置函数。(不是 QML)
我正在渲染从 Openstreetmap.org 提取的地图数据,并且方式(线段)之间的一些高级关系作为形成多边形的内部和外部方式给出。
例如,一个湖可以有形成多边形的外部通道,以及形成湖内岛屿的多个内部通道。
我能够分别正确构建外部多边形和内部多边形,但我很难找到一种简单的方法来使与内部多边形重叠的区域透明。
在下图中,白色区域是用白色绘制的单独多边形,但它们应该是湖/蓝色多边形的透明区域。
我尝试将 QPainterPath 用于外部多边形并调用
但结果是一个空白屏幕。
我必须在渲染之前自己创建新的多边形吗?
QPainterPath 解决方案是否应该工作而我搞砸了?
是否有一些魔法可以使用 QPen/QBrush 来绘制透明的重叠区域?
非常感谢有关如何解决此问题的任何提示。
c++ - 如果 QPolygon 很简单,我怎么能得到?
我正在编写一个可以绘制多边形的工具。我希望它们是简单的多边形并禁止绘制复杂的多边形。
我试过 ToSubpathPolygons()
我有形成多边形的 QPoints 列表。
我正在用 c++ + Qt 编码。我想我可以尝试使用分段交叉点,如果有交叉点,那就不简单了。
我认为 qpainterpath tosubpathPolygons 如果它是一个复杂的多边形,应该给我不止一个。问题应该是这样的:
c++ - QPainterPath 对象上的动画
我想显示一个动画箭头形状按钮。
为了绘制它,我创建了一个继承QGraphicsObject
并使用该类的QPainterPath
类。
我将它绘制在 a 中QGraphicsScene
并使用geometry
在 MyArrow 类中重新定义的属性对其进行动画处理。
您可以在这里找到所有代码:https ://github.com/TaiZzZ/arrowAnimation
我的问题如下:
箭头动画(意味着它向右移动并返回)但在移动时保持绘制。你知道为什么吗?
Ps:我使用QState Machine有相同的行为,所以我猜这个问题仅来自我绘制箭头的方式。
我尝试了两种不同的方法:
将贝塞尔曲线更改为直线,并不能解决问题。
我没有画路径,而是画了一个矩形(the
boundingRect()
)(所以我只改变了drawPath(path)
),它可以工作
总而言之,该错误来自QPainterPath ...但是为什么呢?
编辑 :
这里有图片来说明我的问题:
请注意,它不再是抗锯齿的...
python - 在 QGraphicScene 中创建带有可移动节点的闭合路径
我正在尝试从这个答案扩展出色的实现,因此将通过用户在图形场景中的点击创建路径,并使用双击关闭路径。
这很好用,但我唯一无法解决的问题是路径中第一个节点的更改。显然我希望它会通过该itemChanged
方法更新附加到它的最后一个子路径,但无法实现。
关于如何解决这个问题的任何建议?
我尝试了以下变体,但它不影响最后一个子路径:
我的实验的完整代码:
c++ - 更改 QGraphicsPathItem 中子路径的颜色?
所以我目前在这里使用代码,以前的帖子来创建和更新一个 QGraphicsPathItem。
所有这些都可以正常工作,但现在我需要更改 pathItem 中包含的子路径的颜色。我可以看到使用 QPainter,我可以在此处的其他示例中找到路径,但我没有使用 QPainter,因为它在 GraphicsScene 中。
我明白那个:
创建新的子路径,关闭旧的子路径,但是如何更改 QPen 或仅更改应用于此子路径的颜色?
到目前为止,我只能看到如何更改应用于整个 QGraphicsPathItem 的 Pen,这不是我需要的。
我的想法是每次需要更改颜色时都需要创建一个新的 QGraphicsPathItem 。我当然希望不会。
提前感谢您的帮助。
c++ - 如何以不同的方式为 QPainterPath 子路径着色?
正如标题所示,我正在寻找一种方法来为应用于 QGraphicsPathItem 的 QPainterPath 的子路径着色不同的颜色,或者简单地使用 QGradient QPen 沿着 PathItem 更改颜色。
最终,我试图找到正确的解决方案,这将使我能够明显地绘制一条线,这条线会根据外部变量改变颜色。
我正在使用 QGraphicsScene 来绘制所有内容。
我目前的解决方案是让我创建多个 QGraphicsPathItems,每个 QGraphicsPathItems 用各自的 QPens 着色不同。当我获取数据时,我会填充与这些 PathItem 关联的 PainterPath。这给了我需要的彩色线条,但线条明显断开。
我需要能够在颜色更改期间使 QPainterPath 的子路径不可见,或者更改应用于单个 PathItem 的渐变。或者也许我缺少另一种方法。任何帮助都会很棒。
-编辑:
正如我的问题的解决方案中所述,这就是我目前正在绘制的方式。再次注意,我使用的是 GraphicsScene。
GraphicsScene 中的轴承公式计算产生不稳定的结果
正如您所看到的,线条在绘制时会通过外部变量改变颜色。恐怕 Qgradient 可能不起作用,因为这条线并不总是笔直的;颜色需要沿着线条流动。
这是正在发生的事情:
如您所见,红线 (PathItem) 从上次可见的位置跳到新位置。
为了帮助更好地阐明行为,想象这条线是随着时间的推移而绘制的。它一开始是红色的,很快就会设置一个变量,并且绘制的线段的颜色变为橙色。线的红色部分保持不变,因此我们可以从历史上看到当时变量的状态。在不同的时间,变量会进行调整,并且应用于线条的新部分的颜色会相应地更新。
当线条绘制完成后,我们可以查看它,看看颜色何时发生变化。
我希望这一切都有意义。