Qt 5.5 绘制指针
Posted
技术标签:
【中文标题】Qt 5.5 绘制指针【英文标题】:Qt 5.5 drawing a pointer 【发布时间】:2016-03-21 15:02:14 【问题描述】:Qt 中是否有在行尾绘制箭头/指针的内置方法?
我知道我可以自己画,但想知道是否已经有办法这样做,我在网上搜索并找不到任何东西。
我希望能够旋转线,箭头也随之旋转。
下面是我正在处理的图像:
我想在虚线的末端画箭头,它应该随着虚线从左下角指向周围而旋转。
[编辑] 最后我使用了一个多边形并旋转了它:
添加多边形针的代码:
Polygon clsMyClass::plygnGetNeedle(QPoint* pptOrigin
,int intRadius
,float fltAngle)
const int cintNeedleHalfWidth = 4;
QPolygon plyNeedle;
int intX = pptOrigin->x(), intY = pptOrigin->y();
plyNeedle << QPoint(intX - cintNeedleHalfWidth, intY)
<< QPoint(intX, intY + cintNeedleHalfWidth)
<< QPoint(intX + intRadius - cintNeedleHalfWidth, intY)
<< QPoint(intX, intY- cintNeedleHalfWidth);
return QTransform().translate(intX, intY)
.rotate(fltAngle)
.translate(-intX, -intY)
.map(plyNeedle);
【问题讨论】:
“我在网上搜索过,但没有找到任何东西。”那是因为他们确实隐藏了不错的功能;) 【参考方案1】:我不记得在 Qt 中有这样的事情。至于箭头的位置和角度 - 如果您使用类似 QPainterPath
的 angleAtPercent()
和 pointAtPercent()
函数,您可以轻松找到它们。
【讨论】:
谢谢,我会调查,atm,用QPolygon画箭头 我现在已经使用 QPolygon 和 QPainterPath 绘制了箭头,现在我可以轻松地将多边形附加到一条线上,而无需计算所有点然后随线旋转吗? @SPlatten - 您可以简单地变换画家本身,而不是旋转线和箭头,只需旋转画家 但这不是旋转 Painter 上的所有内容吗?我希望背景保持静止,只有多边形和指针要旋转。 不,只是旋转了painter,和变换“canvas”不一样。例如,如果要镜像绘图,首先绘制所有内容,然后将画家旋转 180 度,然后再次执行绘制代码。这样您就可以在不修改点数的情况下获得结果。以上是关于Qt 5.5 绘制指针的主要内容,如果未能解决你的问题,请参考以下文章