将缩放控件添加到WPF窗体

18

我该如何在WPF表单中实现类似于Visual Studio设计器中可用的缩放控件?

谢谢!

4个回答

25

将你的内容放入网格中,将网格的比例渲染转换绑定到一个滑块上(滑块的最小值应为1):

    <Grid x:Name="LayoutRoot">
        <Grid.RowDefinitions>
            <RowDefinition Height="0.867*"/>
            <RowDefinition Height="0.133*"/>
        </Grid.RowDefinitions>
        <Slider x:Name="slider" Grid.Row="1" Minimum="1"/>
        <Grid RenderTransformOrigin="0.5,0.5">
            <Grid.RenderTransform>
                <TransformGroup>
                    <ScaleTransform 
                    ScaleY="{Binding Path=Value, ElementName=slider}" 
                    ScaleX="{Binding Path=Value, ElementName=slider}"/>
                </TransformGroup>
            </Grid.RenderTransform>
            <TextBox Text="TextBox" Height="45.214"
 VerticalAlignment="Top" Margin="194,139,209,0"/>
            <TextBox VerticalAlignment="Bottom" 
Text="TextBox" Margin="194,0,209,118.254" Height="48.96"/>
        </Grid>
    </Grid>

8
您可能希望使用LayoutTransform进行缩放,这将允许任何父级ScrollViewer控件正确显示滚动条。 - Brett Ryan
@Brett:谢谢!你的评论完美地回答了我的相关问题! - Beska
小细节,但是所有的FrameworkElement都有Render/LayoutTransform,所以在这里Grid不是必要的元素。 - jk.

5

在与这个控件斗争了一段时间后,我决定不使用它,因为在放置控件时似乎存在一些错误(无法居中)。 - Hadi Eskandari

1
要获取WPF专业的缩放控件,请查看 ZoomPanel
这个控件不是免费的,但非常易于使用,并且具有许多功能-动画缩放和平移、支持ScrollViewer、鼠标滚轮支持、包括ZoomController(带有移动、放大、缩小、矩形缩放、重置按钮)等。它还附带了许多代码示例。

1

你应该看一下 Mitsu Furuta 的这篇文章(不用担心有趣的标题!)。我不确定它是否完全符合你的要求,但它可能会给你一些想法...


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接