C# 如何控制x轴的日期和时间?

C# 如何控制x轴的日期和时间?,c#,.net,teechart,C#,.net,Teechart,我正在使用Teechart版本.Net和VS2005 X轴是日期和时间的图形类型,Y轴被添加到直线系列中 我不想表示x轴日期和时间的空值 ---------数据表--------------------- -----T形图表x轴显示----------- 红线是光标工具。我设置了“follow mouse=true”的值。 光标工具指示文本x轴的日期和时间值。显示不在数据表中的时间。下列值​​18:23:49显示了18:23:50的示例。我想表示数据表的日期和时间的x轴值 my code:

我正在使用Teechart版本.Net和VS2005

X轴是日期和时间的图形类型,Y轴被添加到直线系列中

我不想表示x轴日期和时间的空值

---------数据表---------------------

-----T形图表x轴显示-----------

红线是光标工具。我设置了“follow mouse=true”的值。 光标工具指示文本x轴的日期和时间值。显示不在数据表中的时间。下列值​​18:23:49显示了18:23:50的示例。我想表示数据表的日期和时间的x轴值

my code:

private void TeeChartSet()
{
Steema.TeeChart.Styles.Line line = new Steema.TeeChart.Styles.Line();
TChart1.Series.Add(line);
line.XValues.DateTime = true;
TChart1.Axes.Bottom.Increment = Steema.TeeChart.Utils.DateTimeStep[(int)Steema.TeeChart.DateTimeSteps.OneSecond];
line.Stairs = true;            

TChart1.Series[i].XValues.DataMember = "SetTime";
TChart1.Series[i].YValues.DataMember = "Park Brk Pres Sw1";
TChart1.Series[i].DataSource = Datatable;

TChart1.Axes.Bottom.Labels.DateTimeFormat = "HH:mm:ss";
Steema.TeeChart.AxisLabelStyle.PointValue;
}

private void cursor1_Change(object sender, CursorChangeEventArgs e)
{
    TChart1.Invalidate();
    DateTime Time = DateTime.FromOADate(e.XValue);
    sli_CursorTime.Text = "Cursor Time : " + Time.ToString("yyyy-MM-dd HH:mm:ss");
}

private void MakeDt() //Make datatable Sample Code
{
    DataTable dt = new DataTable();
    dt.Columns.Add("SetTime");
    dt.Columns.Add("Park Brk Pres Sw1");

    DataRow row;


    for (int i = 0; i < 10; i++)
    {
        row = dt.NewRow();
        row["SetTime"] = DateTime.Now.AddSeconds(i * 5);
        row["Park Brk Pres Sw1"] = 0;
        dt.Rows.Add(row);
    }
}
我的代码:
私有void TeeChartSet()
{
Steema.TeeChart.Styles.Line=新的Steema.TeeChart.Styles.Line();
TChart1.系列.添加(行);
line.XValues.DateTime=true;
TChart1.Axes.Bottom.Increment=Steema.TeeChart.Utils.DateTimeStep[(int)Steema.TeeChart.DateTimeSteps.1秒];
line.Stairs=true;
TChart1.Series[i].XValues.DataMember=“SetTime”;
TChart1.Series[i].YValues.DataMember=“公园Brk Pres Sw1”;
TChart1.Series[i].DataSource=Datatable;
TChart1.Axes.Bottom.Labels.DateTimeFormat=“HH:mm:ss”;
Steema.TeeChart.AxisLabelStyle.PointValue;
}
私有无效游标1_更改(对象发送方,游标更改事件参数)
{
TChart1.Invalidate();
DateTime Time=DateTime.fromodate(e.XValue);
sli_CursorTime.Text=“光标时间:”+Time.ToString(“yyyy-MM-dd HH:MM:ss”);
}
私有void MakeDt()//生成数据表示例代码
{
DataTable dt=新的DataTable();
dt.列。添加(“设置时间”);
dt.列添加(“停车场Brk Pres Sw1”);
数据行;
对于(int i=0;i<10;i++)
{
row=dt.NewRow();
行[“设置时间”]=DateTime.Now.AddSeconds(i*5);
行[“停车制动器压力Sw1”]=0;
dt.行。添加(行);
}
}

非常感谢您提供的额外信息,它对我们非常有用。我已经做了一个代码,因为你可以用它来解决你的问题。为了编写代码,我使用了注释工具、光标工具和系列线,其中仅显示注释工具中系列点的值。我还更改了系列的日期时间格式。我添加了一行代码以将数据值导出为excel格式,因为您可以看到更改DateTimeFormat的结果,并且它以正确的方式工作

 Steema.TeeChart.Tools.CursorTool cursorTool1;
 private Steema.TeeChart.Tools.Annotation ann;
 private double xval;
 private void InitializeChart()
 {
     tChart1.Aspect.View3D = false;
     //Tools
     cursorTool1 = new Steema.TeeChart.Tools.CursorTool(tChart1.Chart);
     cursorTool1.Style = Steema.TeeChart.Tools.CursorToolStyles.Vertical;
    // cursorTool1.Pen.Style = System.Drawing.Drawing2D.DashStyle.Dash;
     cursorTool1.FollowMouse = true;

   //  cursorTool1.OriginalCursor = Cursors.Arrow;
     ann = new Steema.TeeChart.Tools.Annotation(tChart1.Chart);
     ann.Shape.Pen.Visible = false;
     ann.Shape.Shadow.Visible = false;
     ann.Shape.ShapeStyle = Steema.TeeChart.Drawing.TextShapeStyle.RoundRectangle;
     //Series
     Steema.TeeChart.Styles.Line line1 = new Steema.TeeChart.Styles.Line(tChart1.Chart);
     line1.XValues.DateTime = true;
     line1.DateTimeFormat = "HH:mm:ss";
     cursorTool1.Series = line1;
     line1.Stairs = true;
     line1.XValues.DataMember = "SetTime";
     line1.YValues.DataMember = "Park Brk Pres Sw1";
     line1.DataSource = GetDataTable();

    tChart1.Axes.Bottom.Labels.DateTimeFormat = "HH:mm:ss";
    tChart1.Axes.Bottom.Labels.Style = Steema.TeeChart.AxisLabelStyle.PointValue;
    tChart1.Export.Data.Excel.Save("C:\\Test1.xls");
    //Events
    tChart1.AfterDraw += new PaintChartEventHandler(tChart1_AfterDraw);
    cursorTool1.Change += new CursorChangeEventHandler(cursorTool1_Change);
    tChart1.Draw();
 }

//DataTable
 private DataTable GetDataTable()
 {
     DataTable dataTable1 = new DataTable("DataSet");
     //Condition to filter
     //AddColumns in new Table
     DataColumn xval = new DataColumn("SetTime", typeof(DateTime));
     DataColumn yval = new DataColumn("Park Brk Pres Sw1", typeof(double));
     dataTable1.Columns.Add(xval);
     dataTable1.Columns.Add(yval);
     DateTime dt = DateTime.Now;
     for (int i = 0; i < 10; i++)
     {
         DataRow newRow = dataTable1.NewRow();
         newRow[xval] = dt.AddSeconds(i * 5);
         newRow[yval] = 0;
         dataTable1.Rows.Add(newRow);
     }
     return dataTable1;
 }
//Calculate Interpolate point
 private double InterpolateLineSeries(Steema.TeeChart.Styles.Custom series, int firstindex, int lastindex, double xvalue)
 {
     int index;
     for (index = firstindex; index <= lastindex; index++)
     {
         if (index == -1 || series.XValues.Value[index] > xvalue) break;
     }
     // safeguard
     if (index < 1) index = 1;
     else if (index >= series.Count) index = series.Count - 1;
     // y=(y2-y1)/(x2-x1)*(x-x1)+y1
     double dx = series.XValues[index] - series.XValues[index - 1];
     double dy = series.YValues[index] - series.YValues[index - 1];
     if (dx != 0.0) return dy * (xvalue - series.XValues[index - 1]) / dx + series.YValues[index - 1];
     else return 0.0;
 }

 private double InterpolateLineSeries(Steema.TeeChart.Styles.Custom series, double xvalue)
 {
     return InterpolateLineSeries(series, series.FirstVisibleIndex, series.LastVisibleIndex, xvalue);
 }
 private void cursorTool1_Change(object sender, Steema.TeeChart.Tools.CursorChangeEventArgs e)
 {
     xval = e.XValue;
     ann.Text = "";

    this.Text = e.ValueIndex.ToString();
    foreach (Steema.TeeChart.Styles.Series s in tChart1.Series)
    {
        ann.Text += DateTime.FromOADate(s.XValues[e.ValueIndex]).ToString("HH:mm:ss");
    }
 }
 private void tChart1_AfterDraw(object sender, Steema.TeeChart.Drawing.Graphics3D g)
 {
     int xs = tChart1.Axes.Bottom.CalcXPosValue(xval);
     int ys;
     g.Brush.Visible = true;
     g.Brush.Solid = true;
     for (int i = 0; i < tChart1.Series.Count; i++)

         if (tChart1.Series[i] is Steema.TeeChart.Styles.Custom)
         {
             ys = tChart1.Series[i].GetVertAxis.CalcYPosValue(InterpolateLineSeries(tChart1.Series[i] as Steema.TeeChart.Styles.Custom, xval));
             //Draw elipse above cursor tool.
             g.Brush.Color = tChart1.Series[i].Color;
             //Draw annotation as label above cursor tool.
             ann.Top = ys;
             ann.Left = xs;
         }
 }
Steema.TeeChart.Tools.CursorTool cursorTool1;
私有Steema.TeeChart.Tools.ann;
私人双xval;
私有void InitializeChart()
{
tChart1.Aspect.View3D=false;
//工具
cursorTool1=新的Steema.TeeChart.Tools.CursorTool(tChart1.Chart);
cursorTool1.Style=Steema.TeeChart.Tools.CursorToolStyles.Vertical;
//cursorTool1.Pen.Style=System.Drawing.Drawing2D.DashStyle.Dash;
cursorTool1.FollowMouse=true;
//cursorTool1.OriginalCursor=游标.Arrow;
ann=新的Steema.TeeChart.Tools.Annotation(tChart1.Chart);
ann.Shape.Pen.Visible=false;
ann.Shape.Shadow.Visible=false;
ann.Shape.ShapeStyle=Steema.TeeChart.Drawing.TextShapeStyle.RoundRectangle;
//系列
Steema.TeeChart.Styles.line1=新的Steema.TeeChart.Styles.Line(tChart1.Chart);
line1.XValues.DateTime=true;
line1.DateTimeFormat=“HH:mm:ss”;
cursorTool1.Series=line1;
第1行。楼梯=真;
line1.XValues.DataMember=“SetTime”;
line1.YValues.DataMember=“停车场Brk Pres Sw1”;
line1.DataSource=GetDataTable();
tChart1.Axes.Bottom.Labels.DateTimeFormat=“HH:mm:ss”;
tChart1.Axes.Bottom.Labels.Style=Steema.TeeChart.AxisLabelStyle.PointValue;
tChart1.Export.Data.Excel.Save(“C:\\Test1.xls”);
//事件
tChart1.AfterDraw+=新的PaintChartEventHandler(tChart1\u AfterDraw);
cursorTool1.Change+=新的CursorChangeEventHandler(cursorTool1\u Change);
tChart1.Draw();
}
//数据表
私有数据表GetDataTable()
{
DataTable dataTable1=新数据表(“数据集”);
//过滤条件
//在新表中添加列
DataColumn xval=新的DataColumn(“设置时间”,类型为(日期时间));
DataColumn yval=新的DataColumn(“驻车制动压力Sw1”,类型(双));
dataTable1.Columns.Add(xval);
dataTable1.Columns.Add(yval);
DateTime dt=DateTime.Now;
对于(int i=0;i<10;i++)
{
DataRow newRow=dataTable1.newRow();
newRow[xval]=dt.AddSeconds(i*5);
newRow[yval]=0;
dataTable1.Rows.Add(newRow);
}
返回数据表1;
}
//计算插值点
专用双插值系列(Steema.TeeChart.Styles.Custom系列、int firstindex、int lastindex、double xvalue)
{
整数指数;
对于(index=firstindex;index xvalue)中断;
}
//保障
如果(指数<1)指数=1;
如果(index>=series.Count)index=series.Count-1,则为else;
//y=(y2-y1)/(x2-x1)*(x-x1)+y1
double dx=series.XValues[index]-series.XValues[index-1];
double dy=series.YValues[index]-series.YValues[index-1];
如果(dx!=0.0)返回dy*(xvalue-series.XValues[index-1])/dx+series.YValues[index-1];
否则返回0.0;
}
专用双插值系列(Steema.TeeChart.Styles.Custom系列,双X值)
{
返回插值序列(series,series.FirstVisibleIndex,series.LastVisibleIndex,xvalue);
}
私有无效游标工具1_更改(对象发送方,Steema.TeeChart.Tools.CursorChangeEventArgs e)
{
xval=e.XValue;
ann.Text=“”;
this.Text=e.ValueIndex.ToString();
foreach(tChart1.系列中的Steema.TeeChart.Styles.s系列)
{
ann.Text+=DateTime.FromOADate(s.XValues[e.ValueIndex])到字符串(“HH:mm:ss”);
}
}
私有无效tChart1_后绘图(对象发送器,Steema.TeeChart.Drawing.Graphics3D g)
{
int xs=tChart1.Axes.Bottom.CalcXPosValue(xval);
int ys;
g、 画笔可见=真实;
g、 刷子。实体=真;
对于(int i=0;i