2012-03-10 12 views
6

Tôi đã tạo biểu đồ trên biểu mẫu của mình.tìm giá trị của các điểm trong biểu đồ

Tôi muốn người dùng xem các hình ảnh value, x_valuey_value của từng phần trong bong bóng bằng cách nhấp vào phần đó.

Ballon shoud biến mất khi người dùng di chuyển chuột.

Tôi có thể làm như thế nào?

Trả lời

8

Bạn có thể làm một cái gì đó như thế này:

ToolTip tooltip = new ToolTip(); 
    Point? clickPosition = null; 

    void chart1_MouseMove(object sender, MouseEventArgs e) 
    { 
     if (clickPosition.HasValue && e.Location != clickPosition) 
     { 
      tooltip.RemoveAll(); 
      clickPosition = null; 
     } 
    } 

    void chart1_MouseClick(object sender, MouseEventArgs e) 
    { 
     var pos = e.Location; 
     clickPosition = pos; 
     var results = chart1.HitTest(pos.X, pos.Y, false, 
            ChartElementType.PlottingArea); 
     foreach (var result in results) 
     { 
      if (result.ChartElementType == ChartElementType.PlottingArea) 
      { 
       var xVal = result.ChartArea.AxisX.PixelPositionToValue(pos.X); 
       var yVal = result.ChartArea.AxisY.PixelPositionToValue(pos.Y); 

       tooltip.Show("X=" + xVal + ", Y=" + yVal, 
          this.chart1, e.Location.X,e.Location.Y - 15); 
      } 
     } 
    } 

Kết quả:

enter image description here

EDIT:

để hiển thị tooltip khi di chuyển chuột, bạn có thể sử dụng mã sau:

Point? prevPosition = null; 
ToolTip tooltip = new ToolTip(); 

void chart1_MouseMove(object sender, MouseEventArgs e) 
{ 
    var pos = e.Location; 
    if (prevPosition.HasValue && pos == prevPosition.Value) 
     return; 
    tooltip.RemoveAll(); 
    prevPosition = pos; 
    var results = chart1.HitTest(pos.X, pos.Y, false, 
           ChartElementType.PlottingArea); 
    foreach (var result in results) 
    { 
     if (result.ChartElementType == ChartElementType.PlottingArea) 
     { 
      var xVal = result.ChartArea.AxisX.PixelPositionToValue(pos.X); 
      var yVal = result.ChartArea.AxisY.PixelPositionToValue(pos.Y); 

      tooltip.Show("X=" + xVal + ", Y=" + yVal, this.chart1, 
         pos.X, pos.Y - 15); 
     } 
    } 
} 

Lưu ý rằng điều này hiển thị chú giải công cụ trên bất kỳ vị trí nào của biểu đồ. Nếu bạn chỉ muốn hiển thị nó khi con chuột ở gần điểm chuỗi, bạn có thể sử dụng chức năng mschart, ví dụ: :

yourSeries.ToolTip = "X=#VALX, Y=#VALY"; 

(thêm ví dụ here)

+0

Cảm ơn lot.When chạy dự án không có gì occures cho tôi. Các phương thức mouse_Move và mouse_Click không chạy. Tôi có nên thêm bất kỳ thứ gì vào biểu đồ không? cho excample "chart1.Mouseclick .....". Lưu ý rằng tôi đã thực hiện các biểu đồ dinamically. –

+0

Vấn đề cuối cùng của tôi đã được giải quyết. Nó hoạt động tốt.hỏi khác: Nếu tôi muốn sử dụng mouse_hover. Bạn có thể thay đổi mã để người dùng có thể xem các giá trị bằng cách di chuột không? –

+0

@AsmaGood: kiểm tra chỉnh sửa của tôi – digEmAll