WPF缩放画布内的图像

时间:2015-06-30 20:08:44

标签: wpf mvvm

当我将以下代码放在Window或UserControl中时,图像将以其原始宽度和高度显示。有没有办法自动将外部画布缩放到包含窗口的比例,同时保留窗口的正确宽高比?

    <Canvas Background="AliceBlue">
        <Canvas.LayoutTransform>
            <ScaleTransform ScaleX="1" ScaleY="1"/>
        </Canvas.LayoutTransform>
        <Image Source="ImageName.jpg" HorizontalAlignment="Center" VerticalAlignment="Center"/>

        <Canvas Canvas.Top="20" Canvas.Left="20" Width="20" Height="20" Background="Salmon"/>
    </Canvas>

2 个答案:

答案 0 :(得分:1)

将您的画布包裹在ViewBox

答案 1 :(得分:1)

Canvas永远不会调整其子元素的大小。将Image控件放在Grid中,然后可能将整个内容放在Viewbox中:

<Viewbox>
    <Grid>
        <Image Stretch="None" Source="ImageName.jpg" .../>
        <Canvas Margin="20,20,0,0" Width="20" Height="20" Background="Salmon"/>
    </Grid>
</Viewbox>