Как включить масштабирование в Component One C1Chart

Я использую диаграмму c1 (Component One) для построения графика и хочу включить функцию масштабирования. Я думаю, что мне нужно событие колесика мыши, но я не очень разбираюсь в этой теме. Сюжет находится внутри, чтобы прокручивать окно просмотра, поэтому я должен быть осторожен.


person Sebastian    schedule 18.03.2021    source источник
comment
Не думайте, что для этого есть какие-либо встроенные функции, и вам, скорее всего, придется применить собственное масштабирование, это должно помочь - stackoverflow.com/questions/741956/pan-zoom-image   -  person Rand Random    schedule 18.03.2021
comment
@RandRandom Используйте изображение для рендеринга. Не обслуживайте меня, но спасибо за ответ!   -  person Sebastian    schedule 18.03.2021
comment
Неважно, изображение или C1Chart, каждый элемент управления WPF можно масштабировать/преобразовывать. Увеличение изображения — это просто более распространенный вариант использования.   -  person Rand Random    schedule 18.03.2021
comment
chart.RenderTransform не является ScaleTransform в C1Chart и не имеет атрибута AxisX или AxisY. диаграмма будет x: имя в xaml для C1Chart   -  person Sebastian    schedule 18.03.2021
comment
Я использовал ZoomBorder (второй ответ на вопрос) и, кажется, работает нормально - [1]: i.stack.imgur.com/dDzA7.png [2]: i. stack.imgur.com/sfss8.png [3]: i.stack.imgur .com/BbvOf.png   -  person Rand Random    schedule 18.03.2021
comment
Ошибка, которую вы получаете, вероятно, заключается в том, что в первом ответе вам нужно определить ScaleTransform в XAML, например. i.stack.imgur.com/t29UV.png   -  person Rand Random    schedule 18.03.2021
comment
ZoomBorder делает это сам в методе Initialize   -  person Rand Random    schedule 18.03.2021
comment
При определении ‹c1:C1Chart.RenderTransform› ‹ScaleTransform/› ‹/c1:C1Chart.RenderTransform› компилятор выдает ошибку, например: Вложенные типы не поддерживаются. Я буду тестировать с ZoomBorder.cs   -  person Sebastian    schedule 18.03.2021


Ответы (1)


Я уже добавил это в xaml.

    <c1:C1Chart.Actions>
        <c1:TranslateAction Modifiers="Shift" />
        <c1:ScaleAction Modifiers="Control" />
    </c1:C1Chart.Actions>

В xaml.cs:

chart.ActionEnter += new EventHandler(Actions_Enter);
chart.ActionLeave += new EventHandler(Actions_Leave);

        private void Actions_Leave(object sender, EventArgs e)
    {
        chart.Cursor = Cursors.Arrow;
    }

    private void Actions_Enter(object sender, EventArgs e)
    {
        if (sender is ScaleAction)
            chart.Cursor = Cursors.SizeNS;
        else if (sender is TranslateAction)
            chart.Cursor = Cursors.SizeAll;
        else
            chart.Cursor = Cursors.Hand;
    }
person Sebastian    schedule 18.03.2021