Windows Form Applicationで動画を再生し、その一部分だけをHDMI接続されたディスプレイに表示するためには、DirectShowやWindows Media Playerを使用することが一般的です。以下は、C#を使用してWindows Form Applicationを作成し、動画の再生と部分的なHDMI表示を行う簡単な例です。
まず、プロジェクトにAxWindowsMediaPlayerコントロールを追加します。
Windows FormにAxWindowsMediaPlayerコントロールを配置します。
プロジェクトにInterop.WMPLib.dllおよびAxInterop.WMPLib.dllを追加します。
次に、以下のコードを使用して、動画の再生とHDMIに一部分を表示するプログラムを作成します。
using System;
using System.Windows.Forms;
using WMPLib;
namespace VideoPlayerApp
{
public partial class MainForm : Form
{
private AxWindowsMediaPlayer mediaPlayer;
public MainForm()
{
InitializeComponent();
InitializeMediaPlayer();
}
private void InitializeMediaPlayer()
{
mediaPlayer = new AxWindowsMediaPlayer();
((System.ComponentModel.ISupportInitialize)(mediaPlayer)).BeginInit();
Controls.Add(mediaPlayer);
mediaPlayer.Dock = DockStyle.Fill;
((System.ComponentModel.ISupportInitialize)(mediaPlayer)).EndInit();
}
private void MainForm_Load(object sender, EventArgs e)
{
// HDMIディスプレイの設定
SetHDMIDisplay();
// 動画ファイルのパスを指定
string videoFilePath = "C:\\Path\\To\\Your\\Video.mp4";
// 動画の再生
PlayVideo(videoFilePath);
}
private void SetHDMIDisplay()
{
// HDMIディスプレイを取得(例:2番目のディスプレイ)
Screen[] screens = Screen.AllScreens;
if (screens.Length > 1)
{
Screen hdmiDisplay = screens[1];
mediaPlayer.Location = hdmiDisplay.Bounds.Location;
mediaPlayer.Size = hdmiDisplay.Bounds.Size;
mediaPlayer.uiMode = "none"; // ユーザー インターフェースを非表示
}
else
{
MessageBox.Show("HDMIディスプレイが見つかりませんでした。");
}
}
private void PlayVideo(string filePath)
{
if (System.IO.File.Exists(filePath))
{
mediaPlayer.URL = filePath;
mediaPlayer.Ctlcontrols.play();
}
else
{
MessageBox.Show("指定された動画ファイルが存在しません。");
}
}
}
}
この例では、AxWindowsMediaPlayerを使用して動画を再生し、HDMIディスプレイの位置とサイズを取得して、その部分だけに動画を表示しています。
お役に立てれば幸いです。