拉伸图像以填充可用的宽度/高度(单独)

Eug*_*ene 7 c# wpf image

是否可以用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>
Run Code Online (Sandbox Code Playgroud)

编辑: 对于考试(宽度):如果图像是我想要显示的一半宽,我不关心高度,只是缩放x2图像的高度和宽度.因此图像必须适合宽度,而不关心高度.这是理想的行为,但如果不可能 - 好吧.所以你可以重新考虑问题,如果可能的话,我怎样才能在xaml中完成.

此外,所有图像可能具有不同的宽度和高度

mwj*_*son 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)));
{
Run Code Online (Sandbox Code Playgroud)

x_scale 和 y_scale 是以下形式的双精度数:

所需宽度/原始宽度

也许与您正在寻找的有点不同,但我认为它可以让您走上正确的轨道。

您可以将 TransformedBitmap 存储在内存中并通过以下方式应用新的变换:

TransformedBitmap x = new TransformedBitmap();
x.Transform = new ScaleTransform(x,y);
Run Code Online (Sandbox Code Playgroud)