如何保持图像的原始宽高比而不溢出父控件?
How to keep image in original aspect ratio and not overflowing parent control?
我有一个 WPF 应用程序,主要布局基于网格。在 Column 中,我在堆栈面板中有一个图像,但源太大(垂直)。问题是,它在父元素结束的底部被切割。如果我向下调整 window 的大小,图像最终会自行显示并保持在中心,这很好。但是,当向右调整大小时,图像会调整大小,并下溢到它的父级。我正在寻找一种方法:
- 当单元格太小时,它会拉伸以完全适应原始纵横比
- 向右调整 window 大小时,图像不会调整大小,除非它适合。
这可能吗?
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<StackPanel>
<Label Margin="10,20,10,0" Content="Name:" />
<TextBox Margin="10,0" Name="nameTextBox" TabIndex="0" FontSize="16" />
<Label Margin="10,20,10,0" Content="Pass:" />
<TextBox Margin="10,0" Name="passTextBox" TabIndex="1" FontSize="16" />
<Image Name="logoImage" Margin="10" Source="pics/icon.png"/>
</StackPanel>
</Grid>
你想要这样的东西吗?
<DockPanel>
<StackPanel DockPanel.Dock="Top">
<Label Margin="10,20,10,0" Content="Name:" />
<TextBox Margin="10,0" Name="nameTextBox" TabIndex="0" FontSize="16" />
<Label Margin="10,20,10,0" Content="Pass:" />
<TextBox Margin="10,0" Name="passTextBox" TabIndex="1" FontSize="16" />
</StackPanel>
<Viewbox Stretch="Uniform" DockPanel.Dock="Bottom">
<Image Name="logoImage" Margin="10" Source="pics/text.png"/>
</Viewbox>
</DockPanel>
您需要从 StackPanel 中删除该图像,因为 StackPanel 的垂直增长总是与内容的高度一样多,然后您可以使用 ViewBox
我有一个 WPF 应用程序,主要布局基于网格。在 Column 中,我在堆栈面板中有一个图像,但源太大(垂直)。问题是,它在父元素结束的底部被切割。如果我向下调整 window 的大小,图像最终会自行显示并保持在中心,这很好。但是,当向右调整大小时,图像会调整大小,并下溢到它的父级。我正在寻找一种方法:
- 当单元格太小时,它会拉伸以完全适应原始纵横比
- 向右调整 window 大小时,图像不会调整大小,除非它适合。
这可能吗?
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<StackPanel>
<Label Margin="10,20,10,0" Content="Name:" />
<TextBox Margin="10,0" Name="nameTextBox" TabIndex="0" FontSize="16" />
<Label Margin="10,20,10,0" Content="Pass:" />
<TextBox Margin="10,0" Name="passTextBox" TabIndex="1" FontSize="16" />
<Image Name="logoImage" Margin="10" Source="pics/icon.png"/>
</StackPanel>
</Grid>
你想要这样的东西吗?
<DockPanel>
<StackPanel DockPanel.Dock="Top">
<Label Margin="10,20,10,0" Content="Name:" />
<TextBox Margin="10,0" Name="nameTextBox" TabIndex="0" FontSize="16" />
<Label Margin="10,20,10,0" Content="Pass:" />
<TextBox Margin="10,0" Name="passTextBox" TabIndex="1" FontSize="16" />
</StackPanel>
<Viewbox Stretch="Uniform" DockPanel.Dock="Bottom">
<Image Name="logoImage" Margin="10" Source="pics/text.png"/>
</Viewbox>
</DockPanel>
您需要从 StackPanel 中删除该图像,因为 StackPanel 的垂直增长总是与内容的高度一样多,然后您可以使用 ViewBox