使用隐藏代码在 WPF 中缩放画布

Pra*_*tra 5 c# wpf canvas

这里的场景是:


我有一张画布,上面画着不同的图表。现在的要求是使用 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();
}
Run Code Online (Sandbox Code Playgroud)

Art*_*yba 5

尝试实现这个示例:

    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;
        }
    };
Run Code Online (Sandbox Code Playgroud)


Gre*_*rts 3

我相信您正在寻找的是缩放行为行为是封装某种形式的交互行为的对象。我已经看到了几个“缩放行为”的示例,您应该能够将它们用于您的项目。您应该能够使用或修改以下内容之一......