我有一个 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 有可能吗?我不清楚这是否是一个渲染错误,或者它是否不打算以这种方式使用。