【问题标题】:How can I resize a ChartArea during runtime如何在运行时调整 ChartArea 的大小
【发布时间】:2016-11-29 03:30:50
【问题描述】:

我有一个图表和一个 ChartArea 里面。

我想在 Y 轴或 X 轴上调整 ChartArea 的大小,但我做不到。我需要一个 ChartArea 控件元素,它可以在运行时用鼠标调整大小。

我需要调整图表(或 ChartArea)上的元素大小来调整我的 ChartArea..

【问题讨论】:

  • @PraveenVinny 我想,不。我试过那篇文章,但它没有帮助我
  • 请说明您想要达到的目标。这当然是可能的,但 atm 我会知道该怎么做,因为我不明白你想要什么。为什么要调整默认设置为最大尺寸的 ChartArea 的大小,同时仍为标题、图例标签等周围元素留出空间。???

标签: c# visual-studio mschart


【解决方案1】:

这是一个例子..

  • ..添加一个可移动的HorizontalLineAnnotation 作为句柄和..
  • ..将AnnotationPositionChanging 编码为将句柄用作两个 ChartAreas之间的滑块:

在类级别定义:

HorizontalLineAnnotation slider =   new HorizontalLineAnnotation();

设置并添加到Chart:

slider.AllowMoving = true;
slider.LineWidth = 2;
slider.LineColor = Color.DarkSlateGray;
slider.X = 0;     
slider.Y = 50;
slider.Width = 100;
chart1.Annotations.Add(slider);

这会将滑块设置在中间的左侧,并让它穿过整个图表。

private void chart1_AnnotationPositionChanging(object sender,
                                               AnnotationPositionChangingEventArgs e)
{
    if (e.Annotation == slider)
    {
        chart1.ChartAreas[0].Position.Height = (float)slider.Y - 4;
        chart1.ChartAreas[1].Position.Height = (float)(100f - slider.Y) - 4;
        chart1.ChartAreas[1].Position.Y = (float)slider.Y;

        chart1.Update();
    }
}

这会调整两个 ChartAreas 的大小,为外部内容保留 4% 的余量。我你有一个Title,一个顶部停靠的Legend 或大的Labels,你需要提供超过 4%...

当然,您也可以修改它以仅更改一个 ChartArea 的大小,尽管我不明白您为什么要这样做..

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-02
    • 2011-03-29
    • 2014-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-13
    相关资源
    最近更新 更多