我可以使用带有Qt位置贴图多边形的渐变吗?

我可以使用带有Qt位置贴图多边形的渐变吗?,qt,qml,qtlocation,Qt,Qml,Qtlocation,我有一个Qt位置图,我想在上面画一些多边形。该类提供了根据需要在地形上覆盖多边形的简单方法。我想用渐变来着色多边形,比如 我正在使用Qt5.9中的示例应用程序。我编辑了map/MapComponent.qmlqml文件,并将以下项目添加到地图中: MapCircle { center { latitude: -27.5 longitude: 153.0 } radius: 5000.0 border.width: 0 Rad

我有一个Qt位置图,我想在上面画一些多边形。该类提供了根据需要在地形上覆盖多边形的简单方法。我想用渐变来着色多边形,比如

我正在使用Qt5.9中的示例应用程序。我编辑了
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) }
            }
        }
}
的文档表明它在引擎盖下使用了
MapPolygon
,因此为了简单起见,我在这里使用它。如果我运行测试应用程序,梯度似乎可以工作:

这就是我想要的。但是,如果我滚动视口,使圆的一部分被剪裁出可视区域,则渐变看起来不正确:

以下是发生在我身上的事情:

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

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

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


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

您在这里提出了两个问题:1)这是一个错误吗?是的,这是一个bug,很可能会在下一个补丁版本中修复。2)它能与QGeoPolygon一起工作吗?很可能你不想让它工作。一般来说,你会在这里期待什么?@Paul我想我在作品中已经说明了。我希望渐变保持固定在多边形上,这样,如果我将它的一部分滚动出视口,它就不会挤压渐变以仅覆盖可见区域。取而代之的是,渐变的一部分会被剪切到屏幕外。对,但是渐变是径向的,多边形是多边形。假设1是固定的,我仍然不确定在什么情况下,将多边形与径向渐变相结合看起来是有用的。除非你的多边形几乎是圆的,我是说,我明白你的意思。径向渐变最适合圆(或圆的一部分,la QPaint::drawPie())。但如果渐变确实有效,线性和/或锥形渐变也适用于其他多边形类型。对于更一般的多边形类型,您可能需要对渐变原点在多边形上的定位位置进行一些控制。