Chartクラスを作りました。サードパーティのソフトウェアに、ツールチップでシリーズを追加する機能を提供します。しかし、ツールチップは機能していません。
面白いことに、サードパーティのソフトウェアではツールチップが機能することがあります。Windowsフォームでテストすると、うまくいきません...
私は何を間違っていますか?
クラス:
public class DollarChart : System.Windows.Forms.DataVisualization.Charting.Chart
初期化:
public void Wrapper_Init()
{
System.Windows.Forms.DataVisualization.Charting.ChartArea chartArea1;
System.Windows.Forms.DataVisualization.Charting.Series MySeries2;
chartArea1 = this.ChartAreas["ChartArea1"];
MySeries2 = this.Series["Series1"];
chartArea1.Name = "Default";
chartArea1.AxisY.IntervalAutoMode = System.Windows.Forms.DataVisualization.Charting.IntervalAutoMode.FixedCount;
chartArea1.AxisY.Enabled = System.Windows.Forms.DataVisualization.Charting.AxisEnabled.True;
chartArea1.AxisY2.IntervalAutoMode = System.Windows.Forms.DataVisualization.Charting.IntervalAutoMode.FixedCount;
// Invisible series in order to make room for primary Y-axis on chartarea.
MySeries2.Points.Add(0);
MySeries2.Points.Add(490);
MySeries2.Color = System.Drawing.Color.FromName("Transparent");
this.Name = "chart1";
}
データを挿入する関数:
public void Wrapper_Populate(System.Single[] AvailDollars, int SeriesSplitter, int PlotHours)
{
System.Double[] Dollars;
Dollars = new System.Double[AvailDollars.Length];
AvailDollars.CopyTo(Dollars,0);
System.Double[] buffer;
buffer = new System.Double[SeriesSplitter];
System.Windows.Forms.DataVisualization.Charting.Series MySeries = new System.Windows.Forms.DataVisualization.Charting.Series();
MySeries.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.StackedColumn;
Array.Copy(Dollars, 0, buffer, 0, SeriesSplitter); // Copies from the correct place in the array.
int n = 0;
foreach (double p in buffer)
{
System.Windows.Forms.DataVisualization.Charting.DataPoint Pointer = new System.Windows.Forms.DataVisualization.Charting.DataPoint();
Pointer.YValues[0] = p;
Pointer.ToolTip = "Testing123";
MySeries.Points.Add(Pointer);
if (n == (PlotHours-1)) { break; }
n++;
}
MySeries.Name = "Stacked_Dollars";
MySeries.YAxisType = System.Windows.Forms.DataVisualization.Charting.AxisType.Secondary;
this.Series.Add(MySeries);
データポイントごとにツールチップを設定する理由は、すべてのシリーズの計算された合計と、各データポイントの特定のシリーズの値を表示するためです。array.copy を実行する理由は、600 要素の配列にきちんとパックされた値を受け取り、シリーズごとにセクションに分割されているためです。さらに、System.Single から System.Double に変換する必要があります。
なぜ私がこれをしているのかと聞かれると思います。quickscript.net と呼ばれるものを使用するサードパーティのソフトウェアを使用していました。このサードパーティ製ソフトウェアに欠けているものの 1 つは、グラフ作成です。ただし、カスタム コントロールをインポートすることはできます。そのため、「クライアント コントロール」と「スクリプト関数ライブラリ」と呼ばれるものを作成して、制限を回避する必要があります。