1

似乎在 SurfaceMeshRenderableSeries3D 中添加以下 XAML 无效:

<s3D:SurfaceMeshRenderableSeries3D.PointMarker>
  <s3D:SpherePointMarker3D Size="0.3"/>
</s3D:SurfaceMeshRenderableSeries3D.PointMarker>

添加 ControlTemplate 也不起作用:

<ControlTemplate x:Key="marker">
     <s3D:SpherePointMarker3D Fill="Red" Size="0.5"/>
</ControlTemplate>

...PointMarkerTemplate="{StaticResource marker}...

添加具有相同数据的 ScatterRenderableSeries3D 会在数据点上显示标记。但我们计划在 3D 图表中将多个 3DMeshSeries 与多个 3DLineSeries 组合。每个网格的附加系列使所需系列的数量翻倍。在修改数据点的情况下,它使序列的处理非常复杂。

是否可以在不向每个网格系列添加额外的 ScatterRenderableSeries3D 的情况下添加数据点标记以显示在 SurfaceMeshRenderableSeries3D 上?

下载解决方案

4

1 回答 1

0

根据SciChart 3D Surface 文档,没有任何内容表明您可以在 SurfaceMeshRenderableSeries 上显示 PointMarker。

但是,您可以使用ImpulseRenderableSeries3D实现您想要的相同效果。

在此处输入图像描述

声明图表如下:

<s3D:SciChart3DSurface x:Name="SciChart"
                       BorderThickness="0"
                       WorldDimensions="200,100,200">
    <s3D:SciChart3DSurface.RenderableSeries>
        <s3D:SurfaceMeshRenderableSeries3D x:Name="surfaceMeshRenderableSeries"
                                        DrawMeshAs="SolidWireFrame"
                                        Stroke="#77228B22"
                                        ContourStroke="#77228B22"
                                        StrokeThickness="2.0"
                                        DrawSkirt="False"
                                        Opacity="0.9">
           <s3D:SurfaceMeshRenderableSeries.MeshColorPalette>
              <s3D:GradientColorPalette>
                  <s3D:GradientColorPalette.GradientStops>
                     <GradientStop Offset="1" Color="DarkRed"/>
                     <GradientStop Offset="0.9" Color="Red"/>
                     <GradientStop Offset="0.7" Color="Yellow"/>
                     <GradientStop Offset="0.5" Color="GreenYellow"/>
                     <GradientStop Offset="0.3" Color="Cyan"/>
                     <GradientStop Offset="0.1" Color="Blue"/>
                     <GradientStop Offset="0.0" Color="#1D2C6B"/>
                  </s3D:GradientColorPalette.GradientStops>
              </s3D:GradientColorPalette>
           </s3D:SurfaceMeshRenderableSereis.MeshColorPalette>
        </s3D:SurfaceMeshRenderableSeries3D>
        <s3D:ImpulseRenderableSeries3D x:Name="ImpulseSeries3D"
                                       StrokeThickness="0">
            <s3D:ImpulseRenderableSeries3D.PointMarker>
                <s3D:SpherePointMarker3D Fill="Blue" Size="4.0" Opacity="1"/>
            </s3D:ImpulseRenderableSeries3D.PointMarker>
        </s3D:ImpulseRenderableSeries3D>
    </s3D:SciChart3DSurface.RenderableSeries>
    <s3D:SciChart3DSurface.XAxis>
        <s3D:NumericAxis3D />
    </s3D:SciChart3DSurface.XAxis>
    <s3D:SciChart3DSurface.YAxis>
        <s3D:NumericAxis3D VisibleRange="0, 0.5"/>
    </s3D:SciChart3DSurface.YAxis>
    <s3D:SciChart3DSurface.ZAxis>
        <s3D:NumericAxis3D />
    </s3D:SciChart3DSurface.ZAxis>
</s3D:SciChart3DSurface>

通过在 ImpulseRenderableSeries3D 和 SurfaceMeshRenderableSeries3D 上设置相同的数据序列,您将获得出现在网格坐标处的点标记。

编辑:更新

请注意,我已将ImpulseRenderableSeries3D.StrokeThickness设置为零以隐藏线条。

此外,在 SciChart 的 v5.1.0.11439 中发现了一个错误,将 StrokeThickness=0 和 Opacity 设置为任何值都会导致 NullReferenceException。这将在 SciChart 的 v5.1.0.11440 夜间版本中得到修复。

您可以从SciChart NuGet 源获取最新版本。

于 2018-05-18T10:56:48.153 回答