新手求助,wpf应用程序,谢谢
wpf吧
全部回复
仅看楼主
level 6
如图想左边导入视频后,在中间的表格控件里自动按照3s一个片段切分出来,点击时间段可以跳转到当前时间段的视频播放,谢谢,可有偿
2018年12月10日 05点12分 1
level 6
1
2018年12月10日 12点12分 2
level 1
没用wpf做过视频播放,先试着做下吧,好了发你
2018年12月11日 10点12分 3
做好了,咋发你
2018年12月11日 13点12分
level 1
<Window x:Class="视频播放.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:视频播放"
mc:Ignorable="d"
Title="MainWindow" Height="600" Width="1200">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="450"/>
<RowDefinition Height="127*"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="800"/>
<ColumnDefinition Width="83*"/>
</Grid.ColumnDefinitions>
<MediaElement Name="playerMe" LoadedBehavior="Manual"/>
<DataGrid Grid.Column="1" Grid.RowSpan="2" Name="dataGrid" AutoGenerateColumns="False" IsReadOnly="True" MouseLeftButtonUp="dataGrid_MouseLeftButtonUp">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding 序号}" Header="序号" Width="0.2*"/>
<DataGridTextColumn Binding="{Binding 时间段}" Header="时间段" Width="0.2*"/>
<DataGridTextColumn Header="文字描述" Width="0.2*"/>
<DataGridTextColumn Header="编码" Width="0.2*"/>
<DataGridTextColumn Header="评价" Width="0.2*"/>
</DataGrid.Columns>
</DataGrid>
<Button Content="OpenFile" HorizontalAlignment="Left" Margin="42,10,0,0" Grid.Row="1" VerticalAlignment="Top" Width="75" Click="Button_Click_1"/>
<Button Content="Play" HorizontalAlignment="Left" Margin="42,59,0,0" Grid.Row="1" VerticalAlignment="Top" Width="75" Click="Button_Click"/>
<Button Content="Pause" HorizontalAlignment="Left" Margin="177,59,0,0" Grid.Row="1" VerticalAlignment="Top" Width="75" Click="Button_Click_2"/>
<Button Content="Stop" HorizontalAlignment="Left" Margin="320,59,0,0" Grid.Row="1" VerticalAlignment="Top" Width="75" Click="Button_Click_3"/>
</Grid>
</Window>
2018年12月11日 13点12分 4
level 1
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace 视频播放
{
/// <summary>
/// MainWindow.xaml 的交互逻辑
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
int state;
private void Button_Click(object sender, RoutedEventArgs e)
{
if (state == 0)
{
return;
}
playerMe.Play();
state = 0;
}
private void Button_Click_1(object sender, RoutedEventArgs e)
{
Microsoft.Win32.OpenFileDialog ofd = new Microsoft.Win32.OpenFileDialog();
ofd.Filter = "视频文件|*.mp4;*.avi;*.wmv;*.mkv";
if (ofd.ShowDialog() == true)
{
string path = ofd.FileName;
playerMe.Source = new Uri(path);
playerMe.Play();
state = 0;
videoData.Clear();
double n = 0;
while (!playerMe.NaturalDuration.HasTimeSpan) ;
n = playerMe.NaturalDuration.TimeSpan.TotalSeconds / 3.0;
for (int i = 1; i < n; i++)
{
Data data = new Data();
data.序号 = i;
data.时间段 = TimeSpan.FromSeconds(i * 3);
videoData.Add(data);
}
dataGrid.ItemsSource = videoData;
}
}
private void Button_Click_2(object sender, RoutedEventArgs e)
{
if (state == 1)
{
return;
}
playerMe.Pause();
state = 1;
}
private void Button_Click_3(object sender, RoutedEventArgs e)
{
if (state == 2)
{
return;
}
playerMe.Stop();
state = 2;
}
List<Data> videoData = new List<Data>();
public class Data
{
public int 序号 { set; get; }
public TimeSpan 时间段 { set; get; }
}
private void dataGrid_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
Data o = (Data)dataGrid.SelectedItem;
if (o != null)
{
playerMe.Position = o.时间段;
}
}
}
}
2018年12月11日 13点12分 5
level 1
我把代码直接贴给你了,新建个项目,往MainWindow的前台后台一粘就行
2018年12月11日 13点12分 6
兄弟能教我下怎么用第三方界面库吗 我刚学wpf
2018年12月19日 17点12分
哇 兄弟太感谢了 这几天自己一直在做别的 没看贴吧 今天才看到 太谢谢了
2018年12月25日 08点12分
1