我想达到几乎类似的here。我想要一个支持图像或视频的控件。这将持续一段时间。
我能够使用WMP(Windows媒体播放器)对象显示视频。但现在我正在尝试使用DirectX渲染图像或视频。
请帮帮我。欢迎提出建议。
这是我试过的。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Microsoft.DirectX.AudioVideoPlayback;
using Microsoft.DirectX;
namespace WindowsPlayerDirectX
{
public partial class Form1 : Form
{
private Video video;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
//int height = panel1.Height;
//int width = panel1.Width;
try
{
MessageBox.Show("Hi", "Test");
openFileDialog1.Filter = "Image Files(jpg,png,bmp,gif)|*.jpg;*.jpeg;*.png;*.bmp;*.gif|all files|*.*";
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
// video = new Video(openFileDialog1.FileName,false);
pictureBox1.Load(openFileDialog1.FileName);
}
}catch (Exception ex)
{
MessageBox.Show("Error: Could not read file from disk. Original error: " + ex.Message);
}
}
private void openFileDialog1_FileOk(object sender, CancelEventArgs e)
{
}
private void button2_Click(object sender, EventArgs e)
{
//video = new Video("D:\\Wildlife.wmv", false);
//video.Owner = panel1;
//video.Stop();
//video.Dispose();
//if (!video.Playing)
// video.Play();
//else
// MessageBox.Show("File already playing D:\\Wildlife.wmv ", "Info");
//OpenFileDialog openFileDialog = new OpenFileDialog();
openFileDialog1.ShowDialog();
openFileDialog1.Title = "Select video file..";
openFileDialog1.InitialDirectory = Application.StartupPath;
openFileDialog1.DefaultExt = ".avi";
openFileDialog1.Filter = "Media Files|*.mpg;*.avi;*.wma;*.mov;*.wav;*.mp2;*.mp3|All Files|*.*";
video = new Video(openFileDialog1.FileName);
video.Owner = panel1;
panel1.Width = 700;
panel1.Height = 390;
}
}}
我不是DirectX应用程序的专家,但我用OpenGL制作了一个...
我想缺少的是用于呈现视频的某种Surface
。
顺便说一句,似乎不推荐使用.Net中的Microsoft DirectX。我想你最好使用SharpDx。