用xaml中的图像填充可用宽度/高度是否有办法? 我需要像UniformToFill这样的东西,但我可以控制拉伸方向(宽度或高度)
假设我有以下代码:
<UniformGrid Columns="2" Rows="2">
<Image Source="Desert1.jpg" Stretch="Uniform"/> //
<Image Source="Desert2.jpg" Stretch="UniformToFill"/> //
<Image Source="Desert3.jpg" />
<Image Source="Desert4.jpg" />
</UniformGrid>
修改 for examle(width):如果图像宽度是我要显示的一半,我不关心高度,只是缩放x2图像的高度和宽度。因此图像必须适合宽度,而不关心高度。这是理想的行为,但如果不可能 - 好吧。所以你可以重新考虑问题,如果可能,我怎么能在xaml中做到。
此外,所有图像的宽度和高度可能不同
答案 0 :(得分:3)
我认为你可能能够在某些条件下获得你想要的效果。如果您的图片都大于它们将显示的尺寸,您可以可能使用此图片:
<Image Source="Desert.jpg" Stretch="UniformToFill" StretchDirection="DownOnly" />
ViewBox
具有与Stretch
相同的Image
属性,并且在MSDN上How to: Apply Stretch Properties to the Contents of a Viewbox文章中的不同组合之间存在差异的良好示例。< / p>
答案 1 :(得分:2)
这可能就是你要找的......
TransformedBitmap
这是我在ImageUtility类中创建的静态方法。
public static TransformedBitmap GetScaledBitmapImageSprite(BitmapSource src, double x_scale, double y_scale)
{
return (new TransformedBitmap(src, new ScaleTransform(x_scale, y_scale)));
{
x_scale和y_scale是以下形式的双打:
desired_width / original_width
可能与您正在寻找的有点不同,但我认为它可以让您开始走上正轨。
您可以将TransformedBitmap存储在内存中并通过以下方式应用新的转换:
TransformedBitmap x = new TransformedBitmap();
x.Transform = new ScaleTransform(x,y);
答案 2 :(得分:1)
你应该使用
<Image Source="{Binding Image}" Stretch="Fill"/>
就像你使用Stretch =&#34; UnifrmtoFill&#34;然后它会以一个比例改变长度和宽度,或者我说两者在一起。
所以,如果你使用 拉伸=&#34;填充&#34;,它可以让你随时改变高度或宽度。