在自定义轴之间设置静态空间

时间:2018-01-22 09:57:54

标签: c# teechart

我必须在轴之间有静态空间(比方说20 px) 如果左侧有更多轴,则可以设置$('.sidebar-menu li').click(function(e) { e.stopPropagation(); $(this).siblings().find('.sidebar-sub-menu').slideUp(); $(this).find('.sidebar-sub-menu').slideToggle(); }); StartPosition像素或百分比。

  1. 对于像素设置 - 有什么方法,我如何获得空间的高度,轴在哪里(图中的红线)?
  2. 对于百分比设置 - 有什么方法,我如何自动将20像素转换为百分数?如果我知道身高,我可以自己计算,但我不知道如何得到它 - 见1。
  3. highlighted axes space

    我能够获得整个面板的高度,图表所在的位置,但我不知道从哪里获得左轴空间的实际高度。

1 个答案:

答案 0 :(得分:1)

tChart1.Chart.ChartRect为您提供“绘图区”的矩形。在您的情况下,您必须在轴计算之前获得该大小,您可以使用GetAxesChartRect事件并使用e.AxesChartRect,如下所示:

Chart

private void testChartRect()
{
  for (int i = 0; i < 4; i++)
  {
    Line line = new Line(tChart1.Chart);
    tChart1.Series.Add(line);
    line.Chart = tChart1.Chart;
    line.FillSampleValues();

    Axis axis = new Axis();
    tChart1.Axes.Custom.Add(axis);
    line.CustomVertAxis = axis;
    axis.AxisPen.Color = line.Color;
    axis.Labels.Font.Color = line.Color;
  }

  tChart1.Aspect.View3D = false;
  tChart1.Panel.MarginLeft = 10;

  //tChart1.AfterDraw += TChart1_AfterDraw1;
  tChart1.GetAxesChartRect += TChart1_GetAxesChartRect;
}

private void TChart1_GetAxesChartRect(object sender, GetAxesChartRectEventArgs e)
{
  Rectangle chartRect = e.AxesChartRect;

  int axisLength = (chartRect.Bottom - chartRect.Top) / tChart1.Axes.Custom.Count;
  int margin = 20;
  for (int i = 0; i < tChart1.Axes.Custom.Count; i++)
  {
    Axis axis = tChart1.Axes.Custom[i];
    axis.StartEndPositionUnits = PositionUnits.Pixels;
    axis.StartPosition = i * axisLength;
    axis.EndPosition = (i + 1) * axisLength - (i != (tChart1.Axes.Custom.Count - 1) ? margin : 0);
  }
}

private void TChart1_AfterDraw1(object sender, Graphics3D g)
{
  tChart1.Graphics3D.Brush.Color = Color.Red;
  tChart1.Graphics3D.Brush.Transparency = 80;
  tChart1.Graphics3D.Rectangle(tChart1.Chart.ChartRect);
}