我可以使用带有Qt Location MapPolygon的渐变吗?

时间:2017-05-31 20:20:01

标签: qt qml qtlocation

我有一张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,所以为了简单起见,我在这里使用它。如果我运行测试应用程序,渐变似乎有效:

enter image description here

这就是我想要的。但是,如果我滚动视口以便将部分圆圈剪切出可视区域,则渐变看起来不正确:

enter image description here

这里似乎发生在我身上的事情:

  • 当圆圈在屏幕外被部分剪裁时,它会调整其边界框以反映其所覆盖的部分屏幕。

  • 由于渐变锚定到父MapCircle对象,因此它会自动拉伸其大小以覆盖剪切的边界框。

  • 这导致整个径向渐变形状在压缩边界框中呈现,这不是我想要的。我希望渐变对象的几何体能够与圆的真实大小和位置保持连接。我没有看到第二张图片中看到的压缩渐变,而是希望看到原始径向渐变的类似剪裁部分。

Qt 5.9可以实现吗?我不清楚这是否是渲染错误,或者它是否打算以这种方式使用。

0 个答案:

没有答案