XAML 当我调整表单大小时,C# 视频的大小没有改变
XAML C# video does not change in size when i resize the form
运行 我的媒体播放器以 Stretch="None"
打开,但问题是当我调整它的大小时,我希望视频随着调整大小而缩放,所以如果我的媒体以 640x480 打开,那么我将尺寸调整为 320x240 我希望我的视频可以缩放,请参见下面的屏幕截图:
到目前为止一切顺利,媒体打开时已按视频大小缩放
但是当我尝试缩小屏幕以查看其他选项卡时,视频的大小就丢失了:/
XAML代码:
<Window x:Class="WpfApplication4.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="WPF Media Player" Height="300" Width="300"
MinWidth="300" SizeToContent="WidthAndHeight"
Topmost="True">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<ToolBar>
<Button x:Name="button" Content="Open" Click="button_ClickOpen" />
<Separator />
<Button x:Name="button2" Content="Play" Click="button2_ClickPlay"/>
<Button x:Name="button3" Content="Pause" Click="button3_ClickPause"/>
<Button x:Name="button1" Content="Stop" Click="button1_ClickStop"/>
<Button x:Name="button4" Content="Web" Click="button4_ClickWeb" />
</ToolBar>
<MediaElement Name="mediaElement1" Grid.Row="1" LoadedBehavior="Manual" Stretch="Uniform" />
<StatusBar Grid.Row="2">
<StatusBar.ItemsPanel>
<ItemsPanelTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
</Grid>
</ItemsPanelTemplate>
</StatusBar.ItemsPanel>
<StatusBarItem>
<TextBlock Name="lblProgressStatus">00:00:00</TextBlock>
</StatusBarItem>
<StatusBarItem Grid.Column="1" HorizontalContentAlignment="Stretch">
<Slider Name="slider1" ValueChanged="slider1_ValueChanged" />
</StatusBarItem>
<StatusBarItem Grid.Column="2">
<Slider Name="slider2" Width="50" Height="24" Maximum="1" ValueChanged="slider2_ValueChanged" />
</StatusBarItem>
</StatusBar>
</Grid>
当您用 Stretch="None"
打开 MediaElement
时,它不会拉伸。没有方向。你想让它伸展,所以你需要选择 "None"
以外的另一个值。我可以想象 "Uniform"
很适合制作视频,但只有您自己知道您想要从播放器中获得什么。
尝试将 MediaElement 放入 ViewBox 并设置 ViewBox 的 Stretch 属性 到 UniformToFill.
运行 我的媒体播放器以 Stretch="None"
打开,但问题是当我调整它的大小时,我希望视频随着调整大小而缩放,所以如果我的媒体以 640x480 打开,那么我将尺寸调整为 320x240 我希望我的视频可以缩放,请参见下面的屏幕截图:
到目前为止一切顺利,媒体打开时已按视频大小缩放
但是当我尝试缩小屏幕以查看其他选项卡时,视频的大小就丢失了:/
XAML代码:
<Window x:Class="WpfApplication4.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="WPF Media Player" Height="300" Width="300"
MinWidth="300" SizeToContent="WidthAndHeight"
Topmost="True">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<ToolBar>
<Button x:Name="button" Content="Open" Click="button_ClickOpen" />
<Separator />
<Button x:Name="button2" Content="Play" Click="button2_ClickPlay"/>
<Button x:Name="button3" Content="Pause" Click="button3_ClickPause"/>
<Button x:Name="button1" Content="Stop" Click="button1_ClickStop"/>
<Button x:Name="button4" Content="Web" Click="button4_ClickWeb" />
</ToolBar>
<MediaElement Name="mediaElement1" Grid.Row="1" LoadedBehavior="Manual" Stretch="Uniform" />
<StatusBar Grid.Row="2">
<StatusBar.ItemsPanel>
<ItemsPanelTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
</Grid>
</ItemsPanelTemplate>
</StatusBar.ItemsPanel>
<StatusBarItem>
<TextBlock Name="lblProgressStatus">00:00:00</TextBlock>
</StatusBarItem>
<StatusBarItem Grid.Column="1" HorizontalContentAlignment="Stretch">
<Slider Name="slider1" ValueChanged="slider1_ValueChanged" />
</StatusBarItem>
<StatusBarItem Grid.Column="2">
<Slider Name="slider2" Width="50" Height="24" Maximum="1" ValueChanged="slider2_ValueChanged" />
</StatusBarItem>
</StatusBar>
</Grid>
当您用 Stretch="None"
打开 MediaElement
时,它不会拉伸。没有方向。你想让它伸展,所以你需要选择 "None"
以外的另一个值。我可以想象 "Uniform"
很适合制作视频,但只有您自己知道您想要从播放器中获得什么。
尝试将 MediaElement 放入 ViewBox 并设置 ViewBox 的 Stretch 属性 到 UniformToFill.