VC# + ZedGraph

0

hej. Chciałem na moim wykresie narysować dynamicznie wykres. Miałoby to działać na zasadzie takiej, że gdzieś na wykresie klikam, pojawia się okno ze współrzędnymi kliknięcia na wykresie (Ale na podstawie przedziałki), klikam dodaj, i mam punkt. Za pomocą kilku punktów rysowałbym już wykres. Problem w tym, że x oraz y całej kontrolki potrafię pobrać, ale jak to się ma do samego wykresu, czyli obiektu w tej kontrolce. jak to ma się do przedziałki, skali wykresu?? Może jest jakaś metoda, która sama na podstawie skali pobierze mi kliknięty punkt?? Proszę o rady. Pozdrawiam

0

http://zedgraph.org/wiki/index.php?title=Edit_Points_by_Dragging_the_Mouse

w metodzie zg1_MouseMoveEvent jest chyba to o co Ci chodzi

0

Napisałem coś takiego, ponieważ chciałem przetestować działanie funkcji:

private void zedGraphControl1_MouseClick(ZedGraphControl control, MouseEventArgs e)
        {
           GraphPane myPane = control.GraphPane;
           PointF mousePt = new PointF( e.X, e.Y );

           // see if a dragging operation is underway
           if ( isDragPoint )
           {
              // get the scale values that correspond to the current point
              double curX, curX2, curY, curY2;
              myPane.ReverseTransform(mousePt, out curX, out curX2, out curY, out curY2);
              // if it's a Y2 axis, use that value instead of Y
              if ( dragCurve.IsY2Axis )
                 curY = curY2;
              // calculate the new scale values for the point
              PointPair newPt = new PointPair( startPair.X + curX - startX, startPair.Y + curY - startY );
              // save the data back to the point list
              ( dragCurve.Points as PointPairList )[dragIndex] = newPt;
              // force a redraw
              control.Refresh();
              // tell the ZedGraphControl not to do anything else with this event
           }
           else
           {
              //change the cursor if the mouse is sufficiently close to a point
              if ( myPane.FindNearestPoint( mousePt, out dragCurve, out dragIndex ) &&
                       dragCurve.Points is PointPairList &&
                       dragCurve.YAxisIndex == 0 )
              {
                 zedGraphControl1.Cursor = Cursors.SizeAll;
              }
              else
              {
                  zedGraphControl1.Cursor = Cursors.Default;
              }
           }
        }

Niestety mam jeden błąd (z pozostałymi jakoś sobie poradziłem). Cytuję:

Error	1	No overload for 'zedGraphControl1_MouseClick' matches delegate 'System.Windows.Forms.MouseEventHandler'	C:\[..]Form4.Designer.cs	63	49	Program

Jak to rozwiązać??

0

Metoda zedGraphControl1_MouseClick musi być typu System.Windows.Forms.MouseEventHandler, czyli takiego:

public delegate void MouseEventHandler(
	Object sender,
	MouseEventArgs e
)

Możesz co najwyżej rzutować sender na ZedGraphControl

1 użytkowników online, w tym zalogowanych: 0, gości: 1