当锚点不在“轴视图”中时,C#图表线注释消失

cl12

我确定这个问题有一个我不知道的简单解决方案,但是我还是要问。我有以下代码:

HorizontalLineAnnotation h = new HorizontalLineAnnotation();
h.AnchorX = startOfNewGraph;
h.Width = newGraphWidth;
h.AxisX = resultGraph.ChartAreas[0].AxisX;
h.AxisY = resultGraph.ChartAreas[0].AxisY;
h.IsSizeAlwaysRelative = false;
h.ClipToChartArea = resultGraph.ChartAreas[0].Name;
originalHLAAnchors.Add(h.AnchorX);
originalHLAWidths.Add(h.Width);
resultGraph.Annotations.Add(h);

我的问题是,当我的图形视图缩放到其AnchorX在视图外部时,注释会消失。我想继续使用它,以便即使注释的两端都没有出现在视图中,我仍然可以看到它们之间的线。这是我尝试解决的方法:

private void resultGraph_AxisViewChanged(object sender, ViewEventArgs e)
    {

        if (e.Axis == resultGraph.ChartAreas[0].AxisX)
        {
            ResizeHorizontalAnnotations();
        }
    }

private void ResizeHorizontalAnnotations()
    {
        int count = 0;
        for (int i = 0; i < resultGraph.Annotations.Count; i++)
        {
            if (resultGraph.Annotations[i] is HorizontalLineAnnotation)
            {
                if (originalHLAAnchors[count] < resultGraph.ChartAreas[0].AxisX.ScaleView.ViewMinimum)
                {
                    resultGraph.Annotations[i].AnchorX = resultGraph.ChartAreas[0].AxisX.ScaleView.ViewMinimum + 0.0005;
                    if ((originalHLAAnchors[count] + originalHLAWidths[count]) >= resultGraph.ChartAreas[0].AxisX.ScaleView.ViewMaximum)
                    {
                        resultGraph.Annotations[i].Width = resultGraph.ChartAreas[0].AxisX.ScaleView.ViewMaximum - resultGraph.ChartAreas[0].AxisX.ScaleView.ViewMinimum;
                    }
                    else
                    {
                        resultGraph.Annotations[i].Width -= resultGraph.ChartAreas[0].AxisX.ScaleView.ViewMinimum - originalHLAAnchors[count];
                    }
                }
                else
                {
                    resultGraph.Annotations[i].AnchorX = originalHLAAnchors[count];
                    resultGraph.Annotations[i].Width = originalHLAWidths[count];
                }
                resultGraph.Annotations[i].Visible = true;
               count++;
            }
        }
        resultGraph.UpdateAnnotations();
    }

但是,此代码似乎也不起作用。第一次尝试时未显示注释,因此我在AnchorX中添加了0.005,以查看它是否必须超出视图最小值。这也不起作用。当我检查注释的本地值时,数字是正确的。批注只是无法正确显示或根本没有显示。UpdateAnnotations()缩小视图并禁用我的注释。

有任何想法吗?

战车

看起来像是通过属性Annotations直接将其锚定到某个位置,或者一旦该锚不再位于视标中,则AnchorX通过使用AnchorDataPoint消失将其锚定到某个位置

不确定这是错误还是功能,但是您可以通过直接设置位置来解决。

因此,您应该使用h.Widthh.X属性一起来确定和定位Annotation

    h.X = startOfNewGraph;
    h.Width = newGraphWidth;

您没有向我们展示如何Annoation垂直放置。也许锚定到一个DataPoint还是通过设置Y属性?两者现在都应该可以放大到x轴。

请注意,Annotation.X和和Annotation.AnchorX的默认值均为double.NaN,在chart-lingo中通常表示“自动”;在这种情况下,我想这意味着“不适用”。

如果您同时设置了这两个属性,那么我认为这是成功的Annotation.X因此,将其重新设置为double.NaNAnnotation.AnchorX再次激活。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在C#中向图表添加水平线

来自分类Dev

从图表控件C#中删除网格线

来自分类Dev

当鼠标悬停在图例点上时,CanvasJs在图表中隐藏某些线

来自分类Dev

C# Windows 窗体 - 锚点

来自分类Dev

C#正则表达式中的角色类和锚点

来自分类Dev

视图顶部的FloatingActionButton锚点

来自分类Dev

图表点和绘制线

来自分类Dev

三角形失败时,JsPlumb连接器线和锚点

来自分类Dev

创建HTML锚点以编程方式运行C#函数

来自分类Dev

Gant图表/ C#,WPF视图

来自分类Dev

在 jQuery 中单击锚点时设置 asp:HiddenField 值

来自分类Dev

在 C# 中的 windows 窗体上显示图表控件中的所有点

来自分类Dev

当.fxml不在场景中时,JavaFX按钮消失

来自分类Dev

当缺少某些值时,如何向烛台图表添加带注释的线?

来自分类Dev

C#中的神秘线

来自分类Dev

从网址中删除锚点

来自分类Dev

从网址中删除锚点

来自分类Dev

如何在Laravel 5中使用锚点返回视图?

来自分类Dev

如何在C3图表中创建刻度线

来自分类Dev

如何使用带有线锚的 C# 正则表达式 Lookbehind

来自分类Dev

价格线在HighChart中消失

来自分类Dev

水平线表示Google图表中单个点的轴值

来自分类Dev

jQuery 航路点插件 - 不在视野中时删除类

来自分类Dev

网格视图文本在Android中滚动时消失

来自分类Dev

使用`jitterdodge`时在ggplot中对齐点和误差线

来自分类Dev

List <string>项目在C#中消失

来自分类Dev

显示锚点时停止悬停

来自分类Dev

单击锚点时如何停止悬停?

来自分类Dev

在移动时要移除锚点吗?