Поделиться через


Интерактивность (элементы управления диаграммы)

В зависимости от используемого элемента управления диаграммы для реализации интерактивных возможностей можно использовать различные функции и методы.

Интерактивные возможности в ASP.NET

В элементе управления диаграммы для ASP.NET можно использовать клиентские гиперкарты для расширения интерактивных возможностей работы с диаграммами. Чтобы включить гиперкарты, установите свойство IsMapEnabled в значение True.

Затем можно выполнять следующие действия.

  • Укажите свойства области карты в определенной части элемента управления диаграммы. Эта операция поддерживается в большинстве элементов, в том числе Axis, Series, DataPoint, Annotation, StripLine, LegendCellColumn, LegendItem и LegendCell.

    В каждом из этих элементов используйте свойства Tooltip и Url. Они соответствуют атрибутам alt и href в HTML-теге MAP. Для задания дополнительных атрибутов области карты используйте свойство MapAreaAttributes. Чтобы указать несколько атрибутов, разделяйте их пробелами. Например, в этом свойстве можно указать следующий код, чтобы зарегистрировать клиентский скрипт, который выводит другую диаграмму во всплывающей подсказке.

    onmouseover=\"DisplayTooltip(' <img src=DetailedChart.aspx />');\"
    

    Учтите, что для указанного выше скрипта необходимо, чтобы в элементе управления диаграммы в файле DetailedChart.aspx в качестве типа визуализации использовался двоичный поток. Дополнительные сведения см. в разделе Визуализация изображений диаграммы.

  • Вручную определите области карты в элементе управления диаграммы с помощью свойства коллекции MapAreas (коллекция объектов MapArea).

    В каждом объекте MapArea можно определить форму, координаты, URL-адрес и подсказку области карты. Они соответствуют следующим атрибутам HTML-тега MAP: shape, coord, href и alt.

    Чтобы задать дополнительные атрибуты области карты, для которых отсутствует соответствующее свойство в объекте MapArea, укажите их в свойстве MapAreaAttributes.

  • Свойство PostBackValue в объекте MapArea или любом из перечисленных выше объектов элемента управления диаграммы используется для определения значения обратной передачи в ImageMapEventHandler и получения значения обратной передачи через свойство PostBackValue во время создания события.

    Примечание

    Во всех этих атрибутах можно использовать применимые ключевые слова. Дополнительные сведения см. в разделе Ключевые слова.

В следующем коде изображение ячейки условных обозначений изменяется с выбранного на невыбранное и наоборот каждый раз, когда пользователь щелкает ячейку условных обозначений.

Imports System.Web.UI.DataVisualization.Charting
...
' Set the legend cell to an image showing selection cleared
Chart1.Legends(0).CustomItems(0).Cells(0).Image = "./cleared.png"
Chart1.Legends(0).CustomItems(0).Cells(0).PostBackValue = "item 1"
' Add an ImageMapEventHandler to the Chart.Click event
Me.Chart1.Click += New ImageMapEventHandler(Me.Chart1_Click)
...
' Change the selection image when the user clicks on the legend cell
Private  Sub Chart1_Click(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.ImageMapEventArgs)
   If e.PostBackValue = "item 1" Then
      Dim cell As LegendCell = Chart1.Legends(0).CustomItems(0).Cells(0)
      cell.Image = (cell.Image = "./cleared.png") ? "./selected.png" : "./cleared.png"
   End If
End Sub
using System.Web.UI.DataVisualization.Charting;
...
// Set the legend cell to an image showing selection cleared
Chart1.Legends[0].CustomItems[0].Cells[0].Image = "./cleared.png";
Chart1.Legends[0].CustomItems[0].Cells[0].PostBackValue = "item 1";
// Add an ImageMapEventHandler to the Chart.Click event
this.Chart1.Click += new ImageMapEventHandler(this.Chart1_Click);
...
// Change the selection image when the user clicks on the legend cell
private void Chart1_Click(object sender, System.Web.UI.WebControls.ImageMapEventArgs e)
{
   if (e.PostBackValue == "item 1")
   {
      LegendCell cell = Chart1.Legends[0].CustomItems[0].Cells[0];
      cell.Image = (cell.Image == "./cleared.png") ? "./selected.png" : "./cleared.png";
   }
}

Интерактивные возможности в Windows Forms

В элементе управления диаграммы для Windows Forms для реализации интерактивных возможностей диаграммы используются события мыши и метод HitTest. Также можно использовать курсоры, прокрутку и масштабирование. Дополнительные сведения см. в разделе Курсоры, масштабирование и прокрутка.

В следующем примере кода используется событие OnMouseMove для выделения точки данных, когда на нее наводится курсор.

Me.Chart1.MouseMove += New System.Windows.Forms.MouseEventHandler(Me.Chart1_MouseMove)
...
Private  Sub Chart1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs)
   ' Call HitTest
   Dim result As HitTestResult =  Chart1.HitTest(e.X,e.Y) 
 
   ' Reset Data Point Attributes
   Dim point As DataPoint
   For Each point In Chart1.Series(0).Points
   poInteger.BackSecondaryColor = Color.Black
   poInteger.BackHatchStyle = ChartHatchStyle.None
   poInteger.BorderWidth = 1
   Next
 
   ' If the mouse if over a data point
   If result.ChartElementType = ChartElementType.DataPoint Then
      ' Find selected data point
      Dim point As DataPoint =  Chart1.Series(0).Points(result.PointIndex) 
 
      ' Change the appearance of the data point
      poInteger.BackSecondaryColor = Color.White
      poInteger.BackHatchStyle = ChartHatchStyle.Percent25
      poInteger.BorderWidth = 2
   Else 
      ' Set default cursor
      Me.Cursor = Cursors.Default
   End If
End Sub
this.Chart1.MouseMove += new System.Windows.Forms.MouseEventHandler(this.Chart1_MouseMove);
...
private void Chart1_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
{
   // Call HitTest
   HitTestResult result = Chart1.HitTest( e.X, e.Y );

   // Reset Data Point Attributes
   foreach( DataPoint point in Chart1.Series[0].Points )
   {
   point.BackSecondaryColor = Color.Black;
   point.BackHatchStyle = ChartHatchStyle.None;
   point.BorderWidth = 1;
   }

   // If the mouse if over a data point
   if(result.ChartElementType == ChartElementType.DataPoint)
   {
      // Find selected data point
      DataPoint point = Chart1.Series[0].Points[result.PointIndex];

      // Change the appearance of the data point
      point.BackSecondaryColor = Color.White;
      point.BackHatchStyle = ChartHatchStyle.Percent25;
      point.BorderWidth = 2;
   }
   else
   {
      // Set default cursor
      this.Cursor = Cursors.Default;
   }
}

См. также

Справочник

System.Windows.Forms.DataVisualization.Charting

System.Web.UI.DataVisualization.Charting

Другие ресурсы

Дополнительные разделы

Настройка и события