我有一张Qt位置图,我想在其上绘制一些多边形。 MapPolygon
类提供了一种根据需要在地形上覆盖多边形的简便方法。我想使用渐变(例如RadialGradient
)对多边形进行着色。
我正在使用Qt 5.9中的Map Viewer示例应用程序。我编辑了map/MapComponent.qml
QML文件,并将以下项目添加到地图中:
MapCircle {
center {
latitude: -27.5
longitude: 153.0
}
radius: 5000.0
border.width: 0
RadialGradient {
anchors.fill: parent
gradient: Gradient {
GradientStop { position: 0.0; color: "red" }
GradientStop { position: 0.25; color: "red" }
GradientStop { position: 0.5; color: Qt.rgba(0, 0, 0, 0) }
}
}
}
MapCircle
的文档表明它使用了MapPolygon
,所以为了简单起见,我在这里使用它。如果我运行测试应用程序,渐变似乎有效:
这就是我想要的。但是,如果我滚动视口以便将部分圆圈剪切出可视区域,则渐变看起来不正确:
这里似乎发生在我身上的事情:
当圆圈在屏幕外被部分剪裁时,它会调整其边界框以反映其所覆盖的部分屏幕。
由于渐变锚定到父MapCircle
对象,因此它会自动拉伸其大小以覆盖剪切的边界框。
这导致整个径向渐变形状在压缩边界框中呈现,这不是我想要的。我希望渐变对象的几何体能够与圆的真实大小和位置保持连接。我没有看到第二张图片中看到的压缩渐变,而是希望看到原始径向渐变的类似剪裁部分。
Qt 5.9可以实现吗?我不清楚这是否是渲染错误,或者它是否打算以这种方式使用。