如何修改C#图表控件图表区域百分比

问题描述:

如果我有一个图表控件,其中有2 chartAreas,图表控件在默认情况下将chartAreas放在另一个的顶部,使每个区域占用图表控件的可用大小的50% 。如何修改C#图表控件图表区域百分比

有没有办法来改变chartAreas'%的,这样我可以说,有*图表拿75%的面积,底部图表拿25%?

+1

代码,请... – 2013-03-15 16:48:02

+0

@Peretz对于这部分我使用设计器来生成图表。虽然我可以复制该代码,但我不确定这会有所帮助。它只是一个标准图表,其中有两个chartAreas。没有我自己的代码影响到这一点,只是设计师。我想知道是否有人知道这个代码。 – Xantham 2013-03-15 16:53:38

所以,我终于找到了它,但我认为它没有很好的记录。每个chartArea有财产ChartArea.Position。该属性类型为ElementPosition,并包含与此问题相关的4个属性。

高度:获取或设置图表元素的高度。
宽度:获取或设置图表元素的宽度。
X:获取或设置适用图表元素左上角的相对X坐标。
Y:获取或设置适用图表元素左上角的相对Y坐标。

当挖越深,HeightWidth性能也以相对坐标表示,例如,你只能输入0 - 100

基本上,你必须改变每个高度,和每个Y移动转移他们。初始创建后,它不会自动调整其他数字。例如,如果我只是将chartArea [1]的Height更改为更小的值,它仍然会锚定在之前的位置,因为它会在其下方留下大量空白区域。

如果我再增加chartArea的Height [0],它可能笼络chartArea [1],我们只是调整。因此,我必须设置chartArea [1]的Y将其向下移动,以便它不会被拖动,并且空白区域消失。

因此,要获得类似的东西是什么,我问的问题,我将其设置为:

chart1.ChartAreas[0].Position.Y = 10; 
chart1.ChartAreas[0].Position.Height = 60; 
chart1.ChartAreas[1].Position.Y = 70; 
chart1.ChartAreas[1].Position.Height = 20; 

为了使这个解释有点更加清晰,我会参考图表控件,这些chartAreas是作为“父母”。

这些百分比,但在这个例子中,我们假定父母的大小为100个像素。

这将第一chartArea开始以10像素显示,并且使得约60像素高。然后它开始在70px显示第二个chartArea,并使其大约20px高。

如果这个图表是200像素高,那么比例是相同的,但实际像素是双(所以第一个图表区设置为60将使120像素高)。

我做了垫在我的真正的程序多做一些事情,因为这有标题覆盖轴标签,但我觉得这些数字有助于更好地解释它。

+0

如果对用户不可见(如果在独立的TabPage上有我的图表,并且只有在将图表呈现给用户眼睛后调用*)才会执行此操作。 – Ivan 2014-04-14 22:26:35

+0

只有足够的地方(产生正确的结果)放到目前为止我可以找到的是chart_Paint事件处理程序(但不是PrePaint/PostPaint或其他任何地方)。但是,当窗口最大化时,会产生一些可见的垃圾。 – Ivan 2014-04-14 22:37:15

+0

所以我其实很好奇如何解决这个问题... – Ivan 2014-04-14 22:44:55

您还可以将第二个图表.Y位置设置为第一个图表的底部。这样你只需要担心第一张图表的位置。该代码看起来是这样的:

chart1.ChartAreas[0].Position.Y = 10; 
chart1.ChartAreas[0].Position.Height = 60; 
chart1.ChartAreas[1].Position.Y = chart1.ChartAreas[0].Position.Bottom; 
chart1.ChartAreas[1].Position.Height = 20; 

您还可以垫.Y位置,当然,这取决于你如何多的空白,想图表之间。对于我使用多个图表构建的应用程序,我使用这种方法,并保证每个图表都能正确定位,而不管个别图表做了什么。