【问题标题】:Image is not stretched to the whole client area图像未拉伸到整个客户区
【发布时间】:2013-08-14 16:47:08
【问题描述】:

Visual Studio 2012,WPF C# Windows 应用程序。 XAML:

<Window x:Class="Edge.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="350" Width="525">
    <Grid Background="Blue">
        <Image Source="Images/House.png"  
           HorizontalAlignment="Stretch" VerticalAlignment="Stretch"
           Stretch="Fill" Margin="3"
           />
    </Grid>
</Window>

图像没有像我想要的那样拉伸到整个窗口,它只显示在 1/4 窗口区域。我希望Stretch="Fill" 必须将图像拉伸到整个窗口。怎么了?

【问题讨论】:

  • @Clemens - 这是我的 XAML 页面的精确副本,应用程序不包含除此代码之外的任何内容。
  • 已解决 - 图片显示正常,有白色区域,需要剪掉。
  • 我相信您的图像中有白色。我已经在我的机器上测试了你的代码,它工作正常。我机器中的图像压力很大。

标签: wpf xaml


【解决方案1】:

问题是你的外部GridGrid 将重新调整大小以适合其孩子的大小,但在这种情况下,孩子(Image)正试图拉伸以填充其父母的大小,所以我猜你是什么看到的是正在绘制的图像的实际大小。

尝试使用 DockPanel 代替它填充所有可用的父空间子空间。

<Window x:Class="Edge.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="350" Width="525">
    <DockPanel Background="Blue">
        <Image Source="Images/House.png"  
           HorizontalAlignment="Stretch" VerticalAlignment="Stretch"
           Stretch="Fill" Margin="3"/>
    </DockPanel> 
</Window>

【讨论】:

  • 网格占据了整个客户区——见图中的蓝色边框。我需要使用网格,因为在实际程序中我将图像放置到一个网格单元中 - 结果相同。
  • 您没有给 Grid 指定宽度或高度,Grid 将调整大小以适合其子级。你没有给你的图片一个明确的宽度或高度,那么你期望会发生什么?
  • 谢谢,问题出在图像本身 - 我需要从图像中剪下白色区域。真傻……
  • @AlexFarber 别担心,伙计,我以前做过类似的事情=)
  • @Clemens 我同意。问题中的代码按预期工作。不仅网格行为符合预期,属性意图也是正确的。此答案不应标记为答案!
猜你喜欢
  • 1970-01-01
  • 2012-03-27
  • 2010-09-19
  • 2014-03-29
  • 2018-11-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多