0

ツールチップがどのように機能するかに焦点を当てたある種のチュートリアルを探していましたが、あまり運がありませんでした。

5 つのデータ ポイントを含む折れ線グラフをレンダリングするテスト プロジェクトがあります。Chart私が設定したオブジェクトをインスタンス化するときIsMapEnabled = true。シリーズを定義するとき、ツールチップを設定しようとします。

  private void DefineSeries() {
     var series = new Series();
     series.ToolTip = "#VALY";
     series.PostBackValue = "#Index";
     var x = new[] {0, 1, 2, 3, 4, 5};
     var y = new[] {0, 4, 5, 3, 7, 2};
     for ( int i = 0; i < x.Length; i++ ) {
         series.Points.Add( new DataPoint( x[ i ], y[ i ] ) );
     }
     series.ChartType = SeriesChartType.Line;
     DefineSeriesStyle( series );
     chart_.Series.Add( series );   
  }

グラフは期待どおりにレンダリングされますが、マウスをデータ ポイントの上に置いたときにツールヒントが表示されません。私は明らかにどこかでステップを逃していますが、それが何であるかはわかりません。

編集:チャート ビュー モデルと後続の関数呼び出しのアクション メソッドとコンストラクターを示すコード。

  public ActionResult CausedOutPoint() {
     var causedOut = new CausedOutViewModel();
     var path = Server.MapPath( "~" ) + "CausedOut.Png";
     causedOut.Chart.SaveImage( path, ChartImageFormat.Png );
     return File( path, "img/png" );
  }

  public CausedOutViewModel() {
     chart_ = new Chart {IsMapEnabled = true};
     chart_.PostPaint += chart__PostPaint;
     chart_.RenderType = RenderType.ImageMap;
     chart_.ID = "CausedOut";
     InitializeChart( chart_ );
     chart_.Width = new Unit( 1200, UnitType.Pixel );
     chart_.Height = new Unit( 800, UnitType.Pixel );
     CreateTitles();
  }

  private void InitializeChart( ) {
     DefineSeries();
     DefineChartArea();
  }
4

2 に答える 2

0

私の問題は、チャートのマップ エリアをレンダリングしていないことでした。同じ問題に遭遇した人のために、私の問題を修正したコード:

コントローラー

  public ActionResult CausedOutPoint() {
     var ms = (byte[])Session[ "MS" ];
     return File( ms, "img/png" );
  }

  public ActionResult CausedOutMap(string name)
  {

     var causedOut = new CausedOutViewModel();
     var ms = new MemoryStream();
     causedOut.Chart.SaveImage(ms, ChartImageFormat.Png);
     Session[ "MS" ] = ms.ToArray();
     return Content( causedOut.Chart.GetHtmlImageMap( name ) );
  }

必要なカミソリ Index.csthml

    <img  src="@Url.Action("CausedOutPoint")" usemap="#CausedOut"/>
    @{
        Html.RenderAction("CausedOutMap", new { name = "causedOut"});
    }
于 2013-08-26T20:33:44.527 に答える
0

DefineSeriesStyleツールチップを無効にする何かを行っています。ステートメントなしでメソッドをテストしましDefineSeriesStyle( series );たが、ツールチップが表示されます。

ツールチップの包括的な概要については、カスタム ツールチップで、同様の質問に対する以前の回答を参照してください。 LineSeries WinForms チャートにツールチップを表示しますか?

于 2013-08-26T11:16:32.997 に答える