- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想显示一个动画箭头形状的按钮。
为了绘制它,我创建了一个类,它继承了 QGraphicsObject
并使用了 QPainterPath
类。
我在 QGraphicsScene
中绘制它并使用属性 geometry
对其进行动画处理,该属性在 MyArrow 类中重新定义。
您可以在这里找到所有代码:https://github.com/TaiZzZ/arrowAnimation
我的问题如下:
箭头动画(意味着它向右移动并返回)但在移动时保持绘制状态。你知道为什么吗?
注意:我使用 QState Machine 时有相同的行为,所以我猜这个问题只是出在我画箭头的方式上。
我尝试了两种不同的方法:
将贝塞尔曲线改成直线,并不能解决问题。
我没有绘制路径,而是绘制了一个矩形(boundingRect()
)(所以我只更改了drawPath(path)
),它起作用了
总而言之,错误来自 QPainterPath ... 但为什么呢?
编辑:
这里有图片来说明我的问题:
请注意,它不再是抗锯齿...
最佳答案
问题实际上非常简单——您在重新使用它之前没有清除您的QPainterPath
。
您的 Arrow
类有一个成员...
QPainterPath arrow;
并且您的Arrow::paint
实现开始于...
arrow.moveTo(rect.right(),rect.center().y());
arrow.lineTo(rect.left(),rect.top());
因此,每次调用 Arrow::paint
时,它都会向 QPainterPath
添加另一个新子路径。因此,在任何给定时间,您看到的都是累积的路径。最简单的解决方案是删除 arrow
成员变量并使用局部作用域的 QPainterPath
...
QPainterPath arrow;
arrow.moveTo(rect.right(),rect.center().y());
arrow.lineTo(rect.left(),rect.top());
关于c++ - QPainterPath 对象上的动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44796718/
我有 QPainterPath。我需要通过 x 找到 QPainterPath 的 y 坐标。 我在QPainterPath中找到了intersected()方法。因此,我创建了新的 QPainter
我需要“合并”两个 QPainterPath一起。问题是它们似乎总是两条不同的路径。 我需要的是,合并实际上变得与已构建单个(来自复杂的多边形或复杂的线束)相同,没有任何内部线伪影或子路径,因为它们以
我想显示一个动画箭头形状的按钮。 为了绘制它,我创建了一个类,它继承了 QGraphicsObject 并使用了 QPainterPath 类。 我在 QGraphicsScene 中绘制它并使用属性
有没有办法缩放 QPainterPath ? 例如,我的问题是我有一个 QPainterPath 400,400 的大小包含许多行,我想将其缩放到 800,800 或任何其他大小,并通过向其他坐标添加
在 Qt 5.4.2 中,我使用 QPainterPath 来呈现文本,因为文本可能会被分割成多个字符,并且每个字符都沿着一条曲线呈现。我在不同平台和打印时看到不同的结果。为了呈现文本,我尝试使用 Q
我正在处理一个图形编辑器的功能,我正在编辑圆弧,当形状是椭圆时,QPainterPath::arcTo 的行为并不像我预期的那样;当它是一个圆圈时,它按预期工作。 下面的两张图片显示了结果。在第一种情
有什么方法可以获取 QPainterPath 并将其展开,就像 Photoshop 中的“选择”>“增长...”(或“展开...”)命令一样? 我想获取从 QGraphicsItem::shape 返
我正在尝试确定命中扫描射弹的路径(基本上是一条线,但在我的示例中将其表示为 QPainterPath)与场景中的项目相交的点。我不确定是否有办法使用 QPainterPath、QLineF 等提供的函
如何获得代表沿 QPainterPath 单击的点的百分比。例如,假设我有一条线,如下图所示,用户单击 QPainterPath(由红点表示)。我想记录该点沿路径下降的百分比。在本例中,它将打印 0.
我正在实现自由格式绘图,使用鼠标按下并使用 Qpainter 移动来绘制自由路径 QPainterpath 现在我必须检测绘制的路径何时与另一条路径交叉或相交。我如何识别线何时在某个点相互交叉并向用户
我想在 Qt 中创建这样的形状: 这是一段代码(基本上是绘制一个矩形并在其上绘制一条弧线): QPainterPath groupPath; QPen pen; pen.setCosmetic(
我有一个 QPainterPath,我想裁剪一个 QPixmap 图像。此代码对我有用,但我想使用 PyQt5 内置功能像没有 numpy 的面具 # read image as RGB and ad
使用 QPen 时抚摸QPainterPath , 它在线的中心这样做。我想做的是沿着线的内部 绘制路径。我已经看过类似的问题here但它没有提供明确的解决方案或示例。 如何描边 QPainterPa
以下代码围绕 QPainterPath 绘制文本: QString text = "Short text"; QPainterPath rawPath; // fill path ... while
我正在制作的迷你游戏现在遇到了问题。问题如下:我为我的游戏创建了一个关卡编辑器,因此我必须创建自己的委托(delegate)和模型,当我尝试通过 shapeeditor(更有可能创建一个 painte
有人能告诉我如何访问 QPainterPath 下的所有像素吗? QPainterPath 的元素有一些方法,例如isLineTo(),所以我的第一个想法是创建一个具有起点和终点的线性函数。但如果路径
我正在尝试使用 QGraphicsPathItem 来表示其中有一个洞的多边形(想想 donut )。我可以让它正确绘制,并且中心是透明的。但是,启用项目选择或移动后,我可以在单击孔时与我的对象进行交
我正在 PySide 中使用 QGraphicsScene 创建自定义绘图应用程序 - 我希望能够绘制复杂的形状并让用户通过鼠标与它们交互。为此,我创建了一个名为 Node 的自定义 QGraphic
有什么方法可以编辑 QPainterPath 中单个“lineTo”元素的位置(或删除特定元素并用修改后的版本替换它们?)。我尝试使用 *.setElementPositionAt(i,x,y) 无济
我想画一个有角度的矩形。它可以工作,但是当我改变角度时,矩形的位置会在其他地方发生变化。我听不懂。有人帮我吗? 这是我的代码: QPoint point = QPoint(100,100); // h
我是一名优秀的程序员,十分优秀!