我有一组坐标,它是在我的覆盖方法OnRender上使用DrawGeometry绘制的。我试图绘制的多边形之一是 121000 点,这很多。这会减慢我的地图控制速度。
此外,当此OnRender发生时,点已经在内存中,我只是将点传递给DrawGeomerty
下面是一个在渲染上发生的情况的示例
MapProjection pa = new MapProjection();
if (this.mapCommunication.MapLayers == null)
{
return;
}
foreach (KeyValuePair<Guid, MapLayerHelper> coordinatePointsLayer in this.mapCommunication.MapLayers)
{
if (!coordinatePointsLayer.Value.IsVisible)
{
continue;
}
if (coordinatePointsLayer.Value.State != LayerEnum.Visible)
{
continue;
}
foreach (CoordinateHelper coordinatePoints in coordinatePointsLayer.Value.Coordinates)
{
foreach (StreamGeometry item in coordinatePoints.GeomertyPoints)
{
drawingContext.DrawGeometry(null, penDrawing, item);
}
}
}
我的问题是我应该从这里采取什么方向进行优化,或者我应该尝试合并 DirectX 这会有所帮助或我应该采取什么方法?
感谢您的帮助,我很新来渲染这么多数据。
我最终发现的是如果我错了,请帮助我:)WPF 已经建立在 Direct X 上,所以如果我尝试通过 SharpDX 之类的东西进行访问,对我没有多大帮助,因为我正在进行 dubble 缓冲并且已经实现。
因此,我实现的不是读取OnRender中的点,而是使用具有固定大小的画布,并以这种方式添加System.Windows.Shapes.Path添加我的几何体。
这导致 WPF 能够更好地管理配音缓冲,并且点的呈现速度要快得多。