Шпаргалка по ZedGraph. Как запретить контролу менять курсор
При наведении курсора мыши на график внутри ZedGraph, компонент меняет курсор мыши на курсор в виде перекрестия, а при перемещении графика с помощью средней кнопки мыши - на курсор в виде руки.
Данный пример показывает, как запретить изменять курсор при наведении его на график, при этом разрешив изменение для выделения прямоугольной области на графике и при перемещении графика.
Пример использует событие CursorChanged, которое срабатывает при попытке изменить курсор, однако, если нужно более гибко обрабатывать события, связанные с курсором, то может понадобиться обрабатывать событие MouseMoveEvent (не путать с MouseMove). Вернув, из MouseMoveEvent true, мы запретим дальнейшую обработку события при перемещении мыши внутри контрола, в том числе запретим изменение курсора. Однако при этом надо быть осторожным, так как будет отменена и полезная реакция контрола на это событие (рисование области выделения и перемещение графика).
Все примеры объединены в одном solution для Visual Studio 2005 и написаны на языке C#, скачать их можно отсюда.
Проект в примере - CursorChange
{
public Form1 ()
{
InitializeComponent ();
// Подпишемся на событие, которое срабатывает при изменении курсора
zedGraph.CursorChanged += new EventHandler (zedGraph_CursorChanged);
DrawGraph ();
}
/// <summary>
/// Событие при изменении курсора
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
void zedGraph_CursorChanged (object sender, EventArgs e)
{
// Разрешим ZedGraph'у изменять курсор при выделении участка на графике,
// а также при перемещении графика.
// В обоих случаях курсор будет "захвачен"
// Если курсор не "захвачен", то установим курсор обратно в виде стрелки.
// Если нужно запретить изменять курсор в любом случае,
// то достаточно просто убрать условие.
if (!zedGraph.Capture)
{
zedGraph.Cursor = Cursors.Arrow;
}
}
private double f (double x)
{
if (x == 0)
{
return 1;
}
return Math.Sin (x) / x;
}
private void DrawGraph ()
{
GraphPane pane = zedGraph.GraphPane;
// Очистим список кривых
pane.CurveList.Clear ();
// Создадим список точек
PointPairList list = new PointPairList ();
double xmin = -50;
double xmax = 50;
// Заполняем список точек
for (double x = xmin; x <= xmax; x += 0.01)
{
// добавим в список точку
list.Add (x, f (x));
}
// Создадим кривую
LineItem myCurve = pane.AddCurve ("", list, Color.Blue, SymbolType.None);
// Вызываем метод AxisChange (), чтобы обновить данные об осях.
zedGraph.AxisChange ();
// Обновляем график
zedGraph.Invalidate ();
}
}
Вернуться к остальным примерам
Вы можете подписаться на новости сайта через RSS, Группу Вконтакте или Канал в Telegram.