好问题,恐怕答案是否定的,SciChart 不提供开箱即用的等间距数据点标记的功能。正如您所指出的,它们与数据点相关联。
但是,SciChart 确实提供了创建自定义系列以绘制您想要的任何内容的能力。
在上面的示例/文章中,有代码示例向您展示如何在自定义系列中呈现 PointMarker。
下面是一个使用 RenderContext API 绘制 PointMarker 的 CustomRenderableSeries 的工作示例。这与我们的 Scatter 系列没有什么不同,但展示了该 API 工作原理的一些内部结构
public class CustomPointRenderableSeries : CustomRenderableSeries
{
protected override void Draw(IRenderContext2D renderContext, IRenderPassData renderPassData)
{
base.Draw(renderContext, renderPassData);
// Get the CustomPointRenderableSeries.PointMarker to draw at original points
// Assumes you have declared one in XAML or code
//
// e.g. CustomPointRenderableSeries.PointMarker = new EllipsePointMarker();
//
var pointMarker = base.GetPointMarker();
if (pointMarker != null)
{
// The resampled data for this render pass
var dataPointSeries = renderPassData.PointSeries;
var xCalc = renderPassData.XCoordinateCalculator;
var yCalc = renderPassData.YCoordinateCalculator;
// Begin a batched PointMarker draw operation
pointMarker.BeginBatch(renderContext, pointMarker.Stroke, pointMarker.Fill);
// Iterate over the data
for (int i = 0; i < dataPointSeries.Count; i++)
{
// Convert data to coords
double xCoord = xCalc.GetCoordinate(dataPointSeries.XValues[i]);
double yCoord = yCalc.GetCoordinate(dataPointSeries.YValues[i]);
int dataIndex = dataPointSeries.Indexes[i];
// Draw at current location
pointMarker.MoveTo(renderContext, xCoord, yCoord, dataIndex);
}
// End the batch
// Note: To change point color, start a new batch
pointMarker.EndBatch(renderContext);
}
}
}
因此,理论上,您可以修改此示例以将 X 坐标间隔为固定间隔,而不是在 dataPointSeries.XValues[i] 处。
请注意,此代码循环遍历 dataPointSeries.Count,它是视口中的 X、Y 值。如果您想在数据点之间放置额外的点标记,那么您将需要以某种方式插入 Y 值。
这对读者来说是一个练习,但是如何与 SciChart 的库交互以创建自定义系列是可能的。
![在此处输入图像描述](https://i.stack.imgur.com/j1tJn.png)