0

我有一组使用 DrawGeometry 在我的覆盖方法 OnRender 上绘制的坐标。我试图绘制的多边形之一是 121000 点,这很多。这会减慢我的地图控制速度。

同样,当这个 OnRender 发生时,这些点已经在内存中,我只是将这些点传递给 DrawGeomerty

这是一个例子 OnRender 发生了什么

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 这会有所帮助还是我应该采取什么方法?

感谢您的帮助,我很新来渲染这么多数据。

4

1 回答 1

0

如果我错了,我最终想出的是帮助我:) WPF 已经建立在 Direct X 之上,所以如果我尝试通过 SharpDX 之类的东西访问它对我没有多大帮助,因为我要进行双重缓冲并且已经实现.

所以我实现的不是读取 OnRender 中的点,而是使用具有固定大小的 Canvas 并添加 System.Windows.Shapes.Path 以这种方式添加我的 Geometry。

这导致 WPF 更好地管理双重缓冲并且点渲染得更快。

于 2014-02-19T04:51:04.237 回答