我正在使用 Silverlight 3.0 Image 控件,将其设置为 Stretch property="Uniform"。除非我弄错了,否则 Stretch="Uniform" 的预期行为是它应该缩放图像,保持纵横比,根据需要设置信箱。这适用于横向的图像,因为它们可以放大以填充空间,保持纵横比而不切断任何图像。对于具有更垂直或“纵向”方向的图像,这是完全失败的。它们实际上不是按比例放大以适应图像控件,而是超出高度限制,这样您只能看到图像的中间,顶部和底部被截断。好像控件在缩放时只使用宽度,而忘记检查高度?
这是图像控件中的错误,还是我缺少或错误设置了属性?要复制,请查找/创建具有“纵向”纵横比(高于宽度)的图像,并创建具有 Stretch="Uniform" 的图像。
**** 使用请求的 XAML 更新 ****** 请注意,大小不明确的原因是允许全屏和缩放。
<Grid x:Name="LayoutRoot">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="9"/>
<ColumnDefinition Width="30"/>
<ColumnDefinition Width="30"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="30"/>
<ColumnDefinition Width="50"/>
<ColumnDefinition Width="30"/>
<ColumnDefinition Width="9"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="30" />
</Grid.RowDefinitions>
<Border BorderBrush="Black" Grid.Row="0" Grid.ColumnSpan="8" BorderThickness="1, 1, 1, 0">
<Border BorderBrush="{StaticResource blackStatusMapLGB}" BorderThickness="9,9,9, 0">
<Border BorderBrush="Gray" BorderThickness="1, 1, 1, 0">
<StackPanel VerticalAlignment="Center" HorizontalAlignment="Center">
<MediaElement Height="Auto" Width="Auto" Visibility="Collapsed" AutoPlay="true" Stretch="Fill" MediaFailed="SilverlightMediaPlayer_MediaFailed" Name="previewMediaElement"/>
<Image Name="imagePreview" Stretch="Uniform"/>
</StackPanel>
</Border>
</Border>
</Border>