QML 的 Canvas 提供了一个 2D 画布,支持所有 HTML5 2D 上下文像素操作。使用 QML Canvas 应该避免频繁的更新和动画处理,如果可能的话,最好使用QQuickPaintedItem并通过QPainter在C ++中实现绘图,而不是使用更昂贵且性能可能更低的JavaScript和Context2D方法。
这次我试着画了一个简单的仪表盘,效果和完整代码如下(如果要好看的表盘,还是要配合贴图):
实现代码两个QML文件:
//MyDial.qml
import QtQuick 2.12
import QtQuick.Controls 2.12
//表盘
//目前只实现了简单的,一些细节还没做,如刻度的取值浮点数小数
Item {
id: control
property int lineWidth: 3
property int fontPx: 16
property color themeColor: "#00C1DE"
property int padding: 20
property int radius: (width/2
关注
打赏