2016-10-02 17 views
1

私は、線グラフを使ってビデオの動き検出レベルを表示しています。グラフコントロールのX軸を10分のタイムラインに設定します

タイムラインを表示するにはX軸を取得する必要があります。たとえば、メディアプレーヤーコントロールがビデオの長さとして600秒を返した場合、X軸は、おそらく合計10の間隔で、尻に沿って00:00から10:00まで表示されます。

はこれまでのところ、私はこれを持っている:

chart1.Series[0].XValueType = ChartValueType.Time; 

あまりされていません。私はオンラインで検索しましたが、私が見つけた例は、実際の日付範囲を対象としていて、単純な0〜10分の範囲ではないようです。

x軸の単純な10分タイムラインを取得するにはどうすればよいですか?

答えて

2

あなたのチャートで、実際のDateTime値を使用したい場合は、ここでそれを設定する方法である:ここ

Series s = chart1.Series[0]; 
Axis ax = chart1.ChartAreas[0].AxisX; 

s.ChartType = SeriesChartType.Line; 
s.XValueType = ChartValueType.Time; 

DateTime dt0 = DateTime.MinValue; // any date will do, just know which you use! 
ax.Minimum = dt0.AddSeconds(0).ToOADate(); 
ax.Maximum = dt0.AddSeconds(600).ToOADate(); 
ax.Interval = 10; 
ax.IntervalType = DateTimeIntervalType.Seconds; 
ax.MajorGrid.Interval = 15; 
ax.MajorGrid.IntervalType = DateTimeIntervalType.Seconds; 
ax.MinorGrid.Interval = 5; 
ax.MinorGrid.IntervalType = DateTimeIntervalType.Seconds; 
ax.LabelStyle.Interval = 60; 
ax.LabelStyle.IntervalType = DateTimeIntervalType.Seconds; 
ax.LabelStyle.Format = "mm:ss"; 

for (int i = 0; i < 10; i++) 
{ 
    s.Points.AddXY(dt0.AddSeconds(rnd.Next(30) + 40 * i).ToOADate(), i); 
} 

は結果である:

enter image description here

あなたが代わりにすべてを保つことができますナンバードメインで。しかし、その後、あなたは倍のx軸のラベルをフォーマットしたり、または問題であってもなくてもよい、直接時間値を計算する際にx値を使用することはできません。お時間を

s.XValueType = ChartValueType.Int32; 

ax.Minimum = 0; 
ax.Maximum = 600; 
ax.Interval = 10; 
ax.IntervalType = DateTimeIntervalType.Number; 
ax.MajorGrid.Interval = 15; 
ax.MajorGrid.IntervalType = DateTimeIntervalType.Number; 
ax.MinorGrid.Interval = 5; 
ax.MinorGrid.IntervalType = DateTimeIntervalType.Number; 
ax.LabelStyle.Interval = 60; 
ax.LabelStyle.IntervalType = DateTimeIntervalType.Number; 

enter image description here

+0

感謝これを書いてください。私はオーバーフローエラーを取得していますが。私は、グラフ上のX軸がフレームごとに生成されていると言っていたはずです。したがって、10分のビデオには約4000フレームあります。だから私はこれが私が間違っているところだと思う。 – user2924019

+0

はい、おそらく。開始時刻に追加することで、DataPointの時刻値をどのように作成するのか注意してください。どのようにしてDataPoints – TaW

+0

を追加するのですか?ビデオのすべてのフレームにMy codeループを適用し、すべてのフレームの動き値を生成します。私はこれを単にチャートに追加します: 'chart1.Series [" Series1 "]。Points.AddY(valueToAdd);' – user2924019

関連する問題