Масштабирование холста в WPF с использованием кода позади - PullRequest
3 голосов
/ 17 октября 2010

Вот сценарий:


У меня есть холст с различными диаграммами, нарисованными на нем.Теперь требуется увеличить масштаб изображения с помощью кода на C # или VB.Более того, мне нужно поместить код масштабирования в какую-нибудь DLL, чтобы я мог повторно использовать тот же набор кода в моем приложении.

Теперь мой вопрос заключается в том, как это сделать ....

Я пробовал следующий код, пожалуйста, посмотрите ..

public MainWindow()
{
    InitializeComponent();

    canvas.MouseEnter += new MouseEventHandler(canvas_MouseEnter);
    canvas.MouseWheel += new MouseWheelEventHandler(canvas_MouseWheel);
}

void canvas_MouseWheel(object sender, MouseWheelEventArgs e)
{
    double height = canvas.ActualHeight;
    double width = canvas.ActualWidth;
    double zoom = e.Delta;
    height += 2;
    width += 2;
    ScaleTransform sc = new ScaleTransform(width, height);
    canvas.LayoutTransform = sc;
    canvas.UpdateLayout();
}

Ответы [ 2 ]

3 голосов
/ 19 октября 2010

Я считаю, что вы ищете масштабирование . Поведения - это объекты, которые инкапсулируют некоторую форму интерактивного поведения .Я видел несколько примеров «Zoom Behaviors», которые вы должны использовать для своего проекта.Вы должны быть в состоянии использовать или изменить одно из следующих ...

0 голосов
/ 16 июня 2017

Попробуйте реализовать этот пример:

    var canvas = new Canvas();
    var st = new ScaleTransform();
    var textBox = new TextBox {Text = "Test"};
    canvas.RenderTransform = st;
    canvas.Children.Add(textBox);
    canvas.MouseWheel += (sender, e) =>
    {
        if (e.Delta > 0)
        {
            st.ScaleX *= 2;
            st.ScaleY *= 2;
        }
        else
        {
            st.ScaleX /= 2;
            st.ScaleY /= 2;
        }
    };
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...