我有以下XAML代码:
<Image Source="a.jpg" HorizontalAlignment="Center" VerticalAlignment="Center" Stretch="Uniform"/>
Run Code Online (Sandbox Code Playgroud)
我在视觉上得到了这个:
(http://img810.imageshack.us/img810/2401/imagestretchuniform.png)
有了Stretch="None"
,我得到了这个:
(http://img28.imageshack.us/img28/1783/imagestretchnone.png)
现在,我想要的是垂直或水平居中图像Stretch="Uniform"
!只有"最小"侧(带Uniform
)将居中,右侧.但此刻,你可以在截图看,该图像是简单地把在左上角,即使我定义HorizontalAlignment
和VerticalAlignment
对"Center"
我该怎么办 ?
整个代码是:
<UserControl [...]>
<Canvas Width="640" Height="480" Background="#FF881607">
<Image Source="a.jpg" HorizontalAlignment="Center" VerticalAlignment="Center" Stretch="Uniform"/>
</Canvas>
</UserControl>
Run Code Online (Sandbox Code Playgroud)
编辑(解决方案):以防some1有同样的问题,这是我如何解决它:
<Canvas Width="640" Height="480" Background="#FFAA00FF" >
<Image Source="z.jpg" Height="480" Width="640"/>
</Canvas>
Run Code Online (Sandbox Code Playgroud)
这与HorizontalAlignment="Center" VerticalAlignment="Center" Stretch="Uniform"
图像拉伸到均匀(无论图像是否小于或大于画布)的行为完全相同,并且它在垂直和水平方向都居中!
如果将其放入网格中,它将自动居中.
<Grid>
<Image Source="a.jpg"/>
</Grid>
Run Code Online (Sandbox Code Playgroud)
完全控制一些更多的网格:
<UserControl>
<Grid>
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Grid Grid.Row="0">
<Image Source="a.jpg" Stretch="Uniform"/>
</Grid>
<Grid Grid.Row="1" Margin="10">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<Button Grid.Column="0" Content="Start"/>
<Button Grid.Column="2" Content="Stop"/>
</Grid>
</Grid>
</UserControl>
Run Code Online (Sandbox Code Playgroud)
Canvas不支持图像的HorizontalAlignment.如果你想要像这样的动态布局,Canvas是一个糟糕的选择(如果你想要实际忽略这样的布局,它会很有用).你使用Canvas的确切原因是什么?
只需使用网格:
<Grid Background="#FF881607">
<Image Source="a.jpg" HorizontalAlignment="Center" VerticalAlignment="Center" Stretch="Uniform"/>
</Grid>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
16730 次 |
最近记录: |