在WPF中将图像缩放到画布父级高度

qc6wkl3g  于 2023-08-07  发布在  其他
关注(0)|答案(3)|浏览(116)

我是WPF的新手,正在尝试一些简单的东西。我做了一个自定义控件与画布我有一个图像高于画布。当它显示时,它会溢出画布,所以我希望它缩放到父级高度。可能有一个简单的答案,但我还没有找到。
下面是XAML:

<UserControl x:Class="WPFUserControl.Instance"
             Name="InstanceBox"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             mc:Ignorable="d" 
             Width="448" Height="99.2">
    <Grid Name="InstanceGrid" Background="White" x:FieldModifier="public" Margin="0,0,0,0.2">
        <Canvas>
            <Image 
                HorizontalAlignment="Left"  
                Source="pack://siteoforigin:,,,/Resources/M-Series-single.jpg" />
        </Canvas>
    </Grid>
</UserControl>

字符串

ttcibm8c

ttcibm8c1#

如果去掉画布(因为它不测量其子画布),而是使用ImageStretch属性,那么应该能够获得所需的行为。如果没有,您可以尝试使用ViewBox

ocebsuys

ocebsuys2#

画布不调整查尔兹的大小,所以如果可以的话,你应该把图像放在网格中。如果必须使用画布,则可以将图像的宽度和高度绑定到画布的实际宽度和实际高度。

<Canvas x:Name="canvas">
    <Image x:Name="image" Width="{Binding ActualWidth, ElementName=canvas, Mode=OneWay}" Height="{Binding ActualHeight, ElementName=canvas, Mode=OneWay}" Stretch="Fill" />
</Canvas>

字符串

e7arh2l6

e7arh2l63#

1.不要用帆布。
1.可以绑定到网格的ActualHeight属性。
同样的事情可以做宽度

相关问题