图像在WPF中以编程方式拉伸

时间:2009-07-28 11:08:15

标签: wpf image stretch

在使用XAML的WPF应用程序中

我创建了一个stackpanel(宽度1030),我有2个图像。 1. imgClient width = 784 Height = 66 and 2. imgClientExtra width = 1 and Height = 66

imgClientExtra将是右端,imgClient将从leftend开始。

因此,当应用程序未运行时,图像将适合784 + 1,总图像宽度为785(784 + 1).. 但是,如果应用程序正在运行..图像必须延伸到1030 ... imgClientExtra将在1030,而imgClient将不得不延伸到1029 ..

我使用了stretch.fill ......但没有用。

目前我正在使用这种方式......是否需要修改?

     <StackPanel Name="stkpnlHeader" Margin="0,0,0,0" Width="1254.662" Height="auto" HorizontalAlignment="Left" VerticalAlignment="Top">
                <StackPanel Name="imgStkPnl"Orientation="Vertical" Width="1253.511" HorizontalAlignment="Left">
                    <Image Name="imgClientPhoto" HorizontalAlignment="Left" VerticalAlignment="Top" Width="784" Height="66" 
                   Source="D:\ehtmp_top_left.gif" Stretch="Fill" StretchDirection="Both">

                    </Image>
                    <Image Name="imgExtraImg"   Width="1" Height="66" Margin="0,-66,0,0" HorizontalAlignment="Right" 
                       Source="D:\ehtmp_top_right.gif"
                       ></Image>
                </StackPanel> </StackPanel>

3 个答案:

答案 0 :(得分:1)

从堆栈面板更改为网格。 设置Grid.Column定义。 创建2个列定义 您可以使用“宽度”设置“比率”宽度。 例如,colA Width =“5 *”和colB Width =“3 *”表示colA获得网格的5/8,colB获得网格的3/8。 结合这个概念,同时设置MinWidth和MaxWidth,你应该很高兴。

此外,在代码中设置宽度时,通常需要使用“ActualWidth”属性而不是“Width”(有时会返回NaN)来检查现有控件宽度。

答案 1 :(得分:1)

我认为你的案例中的DockPanel会起作用,因为它会自动拉伸最后一个元素(我没有尝试构建这个代码,所以让我知道它是否不起作用):

<DockPanel Height="66">
    <Image Name="imgExtraImg" Source="D:\ehtmp_top_right.gif" DockPanel.Dock="Right"/>
    <Image Name="imgClientPhoto" Source="D:\ehtmp_top_left.gif"/>
</DockPanel>

答案 2 :(得分:1)

<Grid HorizontalAlignment="Left" Height="66" Name="imgGrid">
   <Grid.ColumnDefinitions>
     <ColumnDefinition Width="*"></ColumnDefinition>
     <ColumnDefinition Width="Auto"></ColumnDefinition>

       </Grid.ColumnDefinitions>
         <Grid.RowDefinitions>
           <RowDefinition Height="66"/>
         </Grid.RowDefinitions>

     <Image Name="imgClientPhoto" Grid.Column="0" Stretch="Fill"Source="D:\eHTMP\Exclusively_My_Work\UI_Application\Images\ehtmp_top_left.gif" ></Image>
<Image Name="imgExtraImg"  Grid.Column="1"Source="D:\eHTMP\Builds\output\WPF_Example\UI_eHTMP\UI_eHTMP\Icons\ehtmp_top_right.gif"></Image></Grid>