Шпаргалка по ZedGraph. Как использовать всплывающие подсказки | jenyay.net

Шпаргалка по ZedGraph. Как использовать всплывающие подсказки

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

Все примеры объединены в одном solution для Visual Studio 2005 и написаны на языке C#, скачать их можно отсюда.

Проект в примере - PointValues

public partial class Form1 : Form
{
    public Form1 ()
    {
        InitializeComponent ();

        // Включим показ всплывающих подсказок при наведении курсора на график
        zedGraph.IsShowPointValues = true;

        // Будем обрабатывать событие PointValueEvent, чтобы изменить формат представления координат
        zedGraph.PointValueEvent +=
            new ZedGraphControl.PointValueHandler (zedGraph_PointValueEvent);

        DrawGraph ();
    }


    /// <summary>
    /// Обработчик события PointValueEvent.
    /// Должен вернуть строку, которая будет показана во всплывающей подсказке
    /// </summary>
    /// <param name="sender">Отправитель сообщения</param>
    /// <param name="pane">Панель для рисования</param>
    /// <param name="curve">Кривая, около которой находится курсор</param>
    /// <param name="iPt">Номер точки в кривой</param>
    /// <returns>Нужно вернуть отображаемую строку</returns>
    string zedGraph_PointValueEvent (ZedGraphControl sender,
        GraphPane pane,
        CurveItem curve,
        int iPt)
    {
        // Получим точку, около которой находимся
        PointPair point = curve[iPt];

        // Сформируем строку
        string result = string.Format ("X: {0:F3}\nY: {1:F3}", point.X, point.Y);

        return result;
    }

    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));
        }

        // Создадим кривую с названием "Sinc",
        // которая будет рисоваться голубым цветом (Color.Blue),
        // Опорные точки выделяться не будут (SymbolType.None)
        LineItem myCurve = pane.AddCurve ("Sinc", list, Color.Blue, SymbolType.None);

        // Вызываем метод AxisChange (), чтобы обновить данные об осях.
        // В противном случае на рисунке будет показана только часть графика,
        // которая умещается в интервалы по осям, установленные по умолчанию
        zedGraph.AxisChange ();

        // Обновляем график
        zedGraph.Invalidate ();
    }

Вернуться к остальным примерам

Вы можете подписаться на новости сайта через RSS, Группу Вконтакте или Канал в Telegram.
5 stars

Рейтинг 5.0/5. Всего 7 голос(а, ов)



Андрей 26.02.2011 - 21:37

Мерцание

Спасибо за пример!
Подскажите, пожалуйста, каким образом можно избавиться от мерцания всплывающей подсказки?

Jenyay 26.02.2011 - 22:17

Надо будет посмотреть, может быть там можно включить двойную буферизацию.

Андрей 26.02.2011 - 23:44

А есть идеи, с какой стороны подойти? Я бы сам тоже попробовал найти решение...

Jenyay 27.02.2011 - 08:40

Не знаю, будет ли этого достаточно, но можно поиграться с ZedGraphControl.DoubleBuffered.

Андрей 27.02.2011 - 14:08

Что-то я не нахожу такого свойства... rolling eyes smiley

Дмитрий 02.03.2011 - 11:03

подсказки в Web

подскажите, пожалуйста, а можно ли как-то реализовать подсказки при выводе графика на веб-форму?

Jenyay 02.03.2011 - 12:26

Сам я web-программированием с использованием ZedGraph не занимался (да и вообще на ASP.NET), может быть кто-нибудь другой подскажет.

typik 02.03.2011 - 22:23

всплывающая подсказка

Как сделать так, чтобы всплывающая подсказка работала, даже если обрабатываю событие MouseMoveEvent? Или как включить эту всплывающую подсказку самому в других обработчиках.

RESPEKT 18.09.2012 - 18:48

Мерцание

Действительно есть мерцание подсказок, и при этом сильно увеличивается загрузка процессора, кто-нибудь решил эту проблему?

kavboy 20.09.2012 - 22:35

Подтверждаю мерцание и загрузку процессора

AndrewPro 06.01.2013 - 03:39

Мерцание

Про мерцание: этот баг описан здесь http://sourceforge.net/p/zedgraph/bugs/112/
и здесь http://sourceforge.net/p/zedgraph/patches/87/
По второй ссылке приложен патч. Попробовал - работает, правда придется скачать исходники ZedGraph, применить патч и перекомпилить.

Slim 17.08.2015 - 17:17

Мерцание

А как этот пат установить?

Алексей 15.01.2017 - 11:32

Мерцание подсказок

Ребят ну выложите уже ктонить скомпиленный dll для VS2008
загрузка 100% гуляет скачет а то основная функция этого графика!

Алексей 15.01.2017 - 13:13

мерцание

Получите-распишитесь - сам взял новый исходник и руками "применил" патч - проверил - вроде работает - жрать перестало!
https://www.dropbox.com/s/g27ugpqc76a42jn/zedgraph_source_v515.rar?dl=0

http://my-files.ru/v1edj9

Евгений 03.02.2017 - 23:13

Спасибо!

Алексей, Благодарю! Мерцание исчезло, единственное вопрос
в release лежал файл размером 290кб
в debug лежал файл размером 323кб

Я взял в release вроде работает все как нужно, я все правильно сделал, что взял из release?

RA3PKJ 11.03.2020 - 02:15

Не работает

При подмене старого ZedGraph на патченый ZedGraph моя программа вообще не запускается. Win8.1-64

RA3PKJ 11.03.2020 - 02:19

Не работает

При подмене старого ZedGraph на патченый ZedGraph моя программа вообще не запускается. Win8.1-64

RA3PKJ 11.03.2020 - 02:22

Не работает

При подмене старого ZedGraph на патченый ZedGraph моя программа вообще не запускается. Win8.1-64

RA3PKJ 11.03.2020 - 02:38

Заработало

Оказывается надо ещё перекомпилировать свой проект с новым ZedGraph.


Подписаться на комментарии
Автор:
Тема:
 Ваш комментарий
 
 
Введите код 208