WPF使用RenderTransform缩放到矩形

时间:2015-08-21 14:40:36

标签: c# wpf canvas zoom viewbox

我对WPF缩放问题有疑问。这个问题实际上是关于Kinect应用程序,但我试图在这里概括它。

我有以下XAML:

`<Window x:Class="RenderTransformViewboxTest.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:local="clr-namespace:RenderTransformViewboxTest"
    mc:Ignorable="d"
    Title="MainWindow" Height="350" Width="525">
<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="4*" />
        <ColumnDefinition />
    </Grid.ColumnDefinitions>
    <Border x:Name="borderContainer" ClipToBounds="True">
        <Viewbox x:Name="contentViewbox">
            <Grid>
                <Image x:Name="imageMoose" Source="Images\Moose.jpg" />
                <Canvas x:Name="canvasContainer">
                    <Rectangle x:Name="TestRectangle" Height="600" Width="200" Canvas.Left="250" Canvas.Top="150" Stroke="Black" Fill="Yellow" Opacity="0.5" />
                </Canvas>
            </Grid>
        </Viewbox>
    </Border>
    <StackPanel Grid.Column="1">
        <Button x:Name="btnZoomToRectangle" Content="Zoom to Rectangle" Click="btnZoomToRectangle_Click" />
    </StackPanel>
</Grid>

这看起来像这样: Example of Screen Before

我无法将正确的代码写入:

  1. 在边框内缩放整个Viewbox(画布和图像),直到矩形看起来处于边框控件的整个高度。
  2. 然后,翻译边框内的整个Viewbox(画布和图像),使矩形看起来位于边框控件的中心。
  3. 由于翻译Viewbox可能会在边框的左/右引入“间隙”,我想以某种方式修剪另一面,以便在左侧和右侧有相同数量的图像。矩形。
  4. 这些步骤的结果应该使屏幕看起来像这样: Example of Screen After

    请注意,由于图像是正确翻译的,我们在框架的左侧引入了间隙。根据要求3,我在右侧引入了相同数量的差距。

    (我在这里为Paint的技能道歉)。

    我多年来一直用头撞墙,遇到麻烦。我有点设法在图像的中心应用矩阵变换来缩放图像,但之后似乎无法用它做太多其他事情!任何帮助都将很高兴。

0 个答案:

没有答案