6 Stimmen

Canvas-Zooming in WPF mit Code dahinter

Hier ist das Szenario:

Ich habe eine Leinwand mit verschiedenen Diagrammen darauf gezeichnet. Nun ist die Anforderung, in die Leinwand mit dem Code hinter entweder mit C# oder VB zu zoomen. Darüber hinaus muss ich den Zoom-Code in einige DLL platzieren, so dass ich den gleichen Satz von Code durch meine Anwendung wiederverwenden kann.

Meine Frage ist nun, wie man das macht....

Ich habe versucht, den folgenden Code pls haben einen Blick.

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

6voto

Artem Kyba Punkte 835

Versuchen Sie, dieses Beispiel umzusetzen:

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

3voto

Greg Roberts Punkte 2542

Ich glaube, was Sie suchen, ist eine Zoomverhalten . Verhaltensweisen sind Objekte, die eine Form des interaktiven Verhaltens kapseln . Ich habe mehrere Beispiele für "Zoom-Verhaltensweisen" gesehen, die Sie für Ihr Projekt verwenden können sollten. Sie sollten in der Lage sein, eines der folgenden zu verwenden oder zu ändern...

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X