0

我有一个 Qt 位置图,我想在上面绘制一些多边形。该类MapPolygon提供了一种根据需要在地形上覆盖多边形的简单方法。我想使用渐变对多边形进行着色,例如RadialGradient.

我正在使用Qt 5.9 中的Map Viewer示例应用程序。我编辑了map/MapComponent.qmlQML 文件并将以下项目添加到地图中:

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

4

0 回答 0