使用VisualBrush的画布无法正确呈现图像

时间:2018-09-04 20:11:47

标签: wpf xaml binding

我有一个Canvas,我将Background属性设置为由Image组成的VisualBrush。我正在将“画布的宽度和高度”绑定到“图像的宽度和高度”上。这是XAML:

            <Canvas x:Name="imageCanvas" ClipToBounds="True" Width="{Binding ActualWidth, ElementName=dataImage}" Height="{Binding ActualHeight, ElementName=dataImage}"
                Loaded="imageCanvas_Loaded" MouseMove="imageCanvas_MouseMove">
            <Canvas.Background>
                <VisualBrush Stretch="Uniform">
                    <VisualBrush.Visual>
                        <Image x:Name="dataImage" ClipToBounds="True" RenderOptions.BitmapScalingMode="HighQuality" Stretch="Uniform" Source="{Binding DataImage, Mode=OneWay}" LayoutTransform="{Binding DataImageLayoutTransform, Mode=OneWay}"/> 
                    </VisualBrush.Visual>
                </VisualBrush>
            </Canvas.Background>
        </Canvas>

请注意,Image正在使用LayoutTransform。我正在使用它来拉伸图像的宽度。如果我禁用LayoutTransform绑定并运行,则会得到以下(正确的)渲染输出:

enter image description here

但是,当我添加LayoutTransform以将图像的宽度拉伸6倍时,图像看起来可以正确拉伸,但是它太小,即不能均匀地填充Canvas:

enter image description here

我怀疑这可能与将“画布高度/宽度”绑定到图像高度宽度有关,但是尚不清楚确切的问题是什么。谁能提供一些见识?预先谢谢你。

0 个答案:

没有答案