QT QGraphicsScene Drawing Arc
QT QGraphicsScene Drawing Arc
我有一个关于在场景中绘制特定弧线的问题。我有关于arc的信息:
Koordinates开始,角度出发,端角,半径。
但是我不能在QPainter
中有效地使用它们。实际上,我尝试QPainterPath
使用形状来显示QGraphicsScene
与addPath("")
,但我不能正常使用功能。我的问题是关于如何使用这些信息来绘制弧线以及如何在我的图形场景中显示它。
您可以使用QGraphicsEllipseItem
添加椭圆,圆圈和段/弧到QGraphicsScene
。
试
QGraphicsEllipseItem* item = new QGraphicsEllipseItem(x, y, width, height);
item->setStartAngle(startAngle);
item->setSpanAngle(endAngle - startAngle);
scene->addItem(item);
不幸的是,QGraphicsEllipseItem只支持QPainter::drawEllipse()
和QPainter::drawPie()
——后者可以用来绘制圆弧,但有一个副作用,总是有一条线从圆弧的开始和结束到中心。
如果你需要一个真弧,你可以创建QGraphicsEllipseItem
的子类并覆盖paint()
方法:
class QGraphicsArcItem : public QGraphicsEllipseItem {
public:
QGraphicsArcItem ( qreal x, qreal y, qreal width, qreal height, QGraphicsItem * parent = 0 ) :
QGraphicsEllipseItem(x, y, width, height, parent) {
}
protected:
void paint ( QPainter * painter, const QStyleOptionGraphicsItem * option, QWidget * widget) {
painter->setPen(pen());
painter->setBrush(brush());
painter->drawArc(rect(), startAngle(), spanAngle());
// if (option->state & QStyle::State_Selected)
// qt_graphicsItem_highlightSelected(this, painter, option);
}
};
您仍然需要处理项目突出显示,不幸的是qt_graphicsItem_highlightSelected
是Qt库中定义的静态函数。
相关文章:
- C++ OpenCV 3D Drawing
- opengl instanced drawing - 3D Arrows
- glDrawElements not drawing
- ARC 在 Objective-C++ 中不起作用
- 如何将System :: Drawing :: Image^转换为未签名的字符
- 目标C++ ARC 和 C++ 容器
- 使用"pencil"在网格上"Drawing"数字
- 使用ProtoBuf序列化类型System.Drawing.Rectangle从.NET到C
- OpenGL VBO Drawing
- 是否可以在ARC中使用本机C++代码
- Swift 中的 ARC 与 Java 中的垃圾收集器有何不同
- Qt OpenGL DrawElements not Drawing the second triangle
- 使用 ARC 在 C 函数中取消引用自身,引用作为intptr_t传递
- 如何在 ARC 环境中指定要C++指针的属性
- 橘子酱海湾合作委员会ARC构建
- Objective-C 集成 C 库并传递字符串值 - ARC 错误
- Objective-C ARC 指针所有权与C++
- clang:错误:无法在 Xcode 4.6.3 中同时指定'-fobjc-arc'和'-fobjc-gc'
- Box2D and ARC doubts
- QT QGraphicsScene Drawing Arc