質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Q&A

4回答

18070閲覧

マルチモニター2面で動画をフルスクリーン表示したい

MitsuoTeratail

総合スコア10

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

0グッド

1クリップ

投稿2017/02/15 22:22

###前提・実現したいこと

マルチモニター2面を利用しています。
2面全部にフォームをフルスクリーン表示することは可能でしょうか?

・モニター2面はそれぞれ19201080 です。
・横に2面並べて使っていますので全体のスクリーン幅としては3840
1080となります。
・コード上で、それぞれのモニターでフルスクリーン表示することはできています。
・動画ファイルのサイズは1920*1080 (HD)相当です。⇒ 拡大表示されることを期待。
・プログラムとしては動画再生プログラムで、
FormにWindowsMediaPlayerを貼り付けているだけの単純なサンプルを作成しています。

###発生している問題・エラーメッセージ
・Formサイズを3840,2160としてもフルスクリーンとならない。
プライマリモニタから半分切れたような表示となります。
・WindowsMediaPlayerを3846,2160としてもフルスクリーンとならない。
プライマリモニタから半分切れたような表示となります。

###該当のソースコード

Rectangle screenRectangle = new Rectangle(0, 0, 0, 0); foreach (Screen s2 in Screen.AllScreens) { //Console.WriteLine(s.Bounds); screenRectangle.X = Math.Min(screenRectangle.X, s2.Bounds.X); screenRectangle.Y = Math.Min(screenRectangle.Y, s2.Bounds.Y); screenRectangle.Width = Math.Max(screenRectangle.Width, s2.Bounds.Right); screenRectangle.Height = Math.Max(screenRectangle.Height, s2.Bounds.Bottom); } this.Width = screenRectangle.Width; //3840 this.Height = screenRectangle.Height; //2160 this.StartPosition = FormStartPosition.CenterScreen;

###試したこと
・Form、MediaPlayerそれぞれ3840にしてもNG(フルスクリーンとなりません)。
・Form、MediaPlayerともにサイズを3840にしてもNGでした。

###補足情報(言語/FW/ツール等のバージョンなど)
・モニターはUSBで接続しています。
利用しているハードはhttp://www.iodata.jp/product/lcd/info/multidisplay/usb.htm です。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

少し古い記事なのですが、関連しそうなものを発見しました。
6画面"5760×2160"ディスプレイで圧倒的戦力を手に入れる(5/5)

(2)6画面を1つの大きなデスクトップとして管理する

「ディスプレイ表示の変更」メニューを使って、実物とWindows上で画面の位置関係をそろえたが、このままでは少々困る用途がある。それが大画面でのゲーム用途だ。3Dゲームなどを6画面全体に表示するには、6台のディスプレイを内部的に1台のディスプレイとして管理したうえで、GPUから全画面表示を行わなければならない。

と記述の上で

一方、GPUにAMD Radeon HD 7870 GHz Editionを採用したグラフィックスカードのVTX3D VX7870 2GBD5-6Dであれば、これ1枚でAMD Eyefinityテクノロジーによる6画面表示が可能なので、6台のディスプレイを1台のディスプレイとして一元管理できる。

と記載があります。

多分ですが、記事の当時のOSでは、マルチ画面を1画面としては制御できず、デバイスドライバ側で制御する必要があったのだと思います。

現在のOSでどこまで対応可能か分かりませんが、この辺はあまり変わっていないのでは無いかと推測されます。

記事では GPU に依存して実現の可否が決まっていたようなので、GPU メーカへ問い合わせることで、機能制御の成否が確認できると思います。

多分このあたりの情報は、ゲーム関連と医療情報系が進んでいるので、そのあたりに強いデバイス屋さんで情報を確認しても良いかもしれないですね。

投稿2017/02/16 22:29

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

うーん。グラフィックボードに依存することがらなのかもしれません。
解決はしていませんが、継続調査してみます。

投稿2017/02/16 22:23

MitsuoTeratail

総合スコア10

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ハードウェアアクセラレータが有効な為、セカンダリモニタに表示されないという現象になっているのだと思います。
プログラムではなく、他の動画プレーヤーでも同様なのでしょうか?
もし、他の動画プレーヤーの機能でハードウェアアクセラレータ等を無効に出来るような設定があれば、そのあたりも試してみて切り分け出来るのではないかと思います。

ただ、申し訳ありませんが、プログラムからWMPの設定を変更できるのか等に関しては分かりません。

投稿2017/02/16 03:50

YAmaGNZ

総合スコア10222

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

MitsuoTeratail

2017/02/16 22:04

ご回答いただきありがとうございます。 ほかのプレーヤーでいうと、 動画素材をダブルクリック>Windows Media Player(アプリ)が起動>ウィンドウ自体を2画面分まで拡大>画面「右下」の「…」から「拡大」を選ぶと、それらしき状況になります。 ・ディスプレイ設定でうまくいかないかと試してみましたが状況に変化ありません。 引き続きお願いできれば幸いです。
guest

0

ふつうの動画プレイヤーでも、ウィンドウの縦横比をどれだけ変化させたところで、動画がぴったり追随することはなくて、「縦横比は動画そのままでウィンドウに収まる」サイズで再生されますので、そういうことだと思います。

…というより、横に繋いだモニターで無理やりぴったりサイズで再生させようとすると、横2倍に引き伸ばした動画となりますが、そんな状態で再生したいのでしょうか。

投稿2017/02/16 01:51

maisumakun

総合スコア145121

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

MitsuoTeratail

2017/02/16 22:04

ご回答いただきありがとうございます。 質問の意図が伝わっていないようで申し訳ありません。 縦横比はそのままなので横2面に表示すると、動画の下半分は表示されないことになります。 もし仮に4面を接続して、 A・B C・D というようにモニタを設定すれば、全べて表示されることを想定しています。 ただ現在は A・B しかモニタ接続してませんので、仮に制御がうまくいけば上半分だけ映ることを想定してます。 引き続きお願いできれば幸いです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問