• 締切済み

c++/cli .NET Formアプリケーションの全画面の表示について

現在visual studio 2008 Express Editionで、c++/cli .NET のFormアプリケーションを作成しています。 Bitmapクラスに格納した画像データを、全画面で背景を黒にして表示させたいのですが、やり方がわかりません。誰か教えてください!!

みんなの回答

回答No.1

 こんばんは。  フルスクリーン見たいにしたいのでしょうか。ポップアップスタイルでデスクトップ全体を覆ってしまえば良い様な気がします。  以下はキーボードのどれかを押す度にフルスクリーン⇔ウィンドウを切り替えます。参考程度に。 //メンバ変数 private: System::Windows::Forms::FormBorderStyle formBorderStyleOrg; private: System::Drawing::Rectangle rectOrg; private: System::Drawing::Bitmap^ bitmap; public: Form1(void) { InitializeComponent(); // //TODO: ここにコンストラクタ コードを追加します // //取り敢えずココでビットマップをロードする this->bitmap = dynamic_cast<System::Drawing::Bitmap^>(gcnew System::Drawing::Bitmap("test.bmp")); } //KeyPress private: System::Void Form1_KeyPress(System::Object^ sender, System::Windows::Forms::KeyPressEventArgs^ e) { //ポップアップでなければ if(this->FormBorderStyle != System::Windows::Forms::FormBorderStyle::None) { //デスクトップを取る System::Windows::Forms::Screen^ scr = System::Windows::Forms::Screen::PrimaryScreen; //現在のボーダースタイルを退避する this->formBorderStyleOrg = this->FormBorderStyle; //現在のウィンドウ領域を退避する this->rectOrg = this->Bounds; //ボーダースタイルをポップアップにする this->FormBorderStyle = System::Windows::Forms::FormBorderStyle::None; //デスクトップの領域を設定する this->Bounds = scr->Bounds; } //元に戻す else { //以前のボーダースタイルを設定する this->FormBorderStyle = this->formBorderStyleOrg; //以前のウィンドウ領域を設定する this->Bounds = this->rectOrg; } } //Paintイベント private: System::Void Form1_Paint(System::Object^ sender, System::Windows::Forms::PaintEventArgs^ e) { //黒いブラシを作成する System::Drawing::Brush^ brush = gcnew System::Drawing::SolidBrush(System::Drawing::Color::Black); //ビットマップが有効なら if(this->bitmap != nullptr) { const int x = (this->ClientSize.Width - this->bitmap->Width) / 2; const int y = (this->ClientSize.Height- this->bitmap->Height) / 2; //背景を黒く塗り潰す e->Graphics->FillRectangle(brush, this->ClientRectangle); //中心にビットマップを描く e->Graphics->DrawImage(this->bitmap, System::Drawing::Point(x, y)); } //ブラシを消す delete brush; }

yoppiita
質問者

お礼

フォームのプロパティの設定を WindowState→Maximized FormBorderStyle→None と、任意に変えられるようにしたら一応フルスクリーンができるようになりました! ご丁寧な回答ありがとうございます。 非常に参考になるようなところが多いので、今後のプログラムの参考にさせていいただきます。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • C++/CLIにてForm1の要素に外部から

    C++/CLIにてForm1の要素に外部の関数からアクセスしたいです。 Windows7、Visual Studio2010にてC++/CLIで 簡単なフォームアプリケーションを作成しています。 仮に新規作成し、とりあえずテキストボックスを貼りつけたとします。 この際「Form1.h」が自動的に作成され、Form1クラスの中に textBox1などの要素が自動的に作成されるかと思います。 Form1クラスのメソッドの中からそれにアクセスするには this->textBox1->Text = L"変更"; みたいにするだけで良いですが、 こうしたForm1クラスの要素に対し、 Form1.h以外の場所にある外部の自作の関数から アクセスを行うにはどのようにすれば良いのでしょうか。

  • C++/CLIでの画像情報(RGB)の取得

    Visual C++ 2005のC++/CLI対応で、.NET Frameworkのクラスライブラリを使用し、画像処理のプログラムを作成しています。 pictureBox1->Image = gcnew Bitmap( ファイル名 ); で、画像を表示するところまではできたのですが、表示したBitmapデータのRGBカラー情報を取得する方法がわからず、困っています。 ご存知の方、教えてください。 また、このような情報が載っている書籍やサイトがありましたら、合わせて教えてください。 よろしくお願いします。 必要な情報が抜けていましたら、お手数ですが、ご指摘お願いします。

  • C++/CLIとMFC

    よろしくお願いします。 環境はVisual C++ 2005です。 ご存知の方がいらっしゃいましたらご教授ください。 一つのプロジェクトで作成した親Formに対して、 もう一つのプロジェクトで作成した子ウィンドウをプラグインさせ、MDIを作ろうとしているのですが [CLR]->[Windowsフォームアプリケーション]で作成したプロジェクトのFormに対して MFCで作成した子ウィンドウをプラグインさせることは可能なのでしょうか? C++/CLIでMDIを作る時は MDIの親となるFormのIsMdiContainerプロパティをtrueに設定し、 MDIの子となるFormのMdiParentプロパティをMDIの親Formの インスタンスに設定する必要があると思うのですが、 子の部分をMFCを使って作成した場合どのようにすれば 親子関係が作れるのかわからず質問させていただきました。 よろしくお願いします。

  • visual studio 2005 c++/CLI ではないC++ winアプリ

    こんばんは 表記の件に関して質問があります。 表題のとおりなのですが visual studio 2005 でc++/CLI ではないC++(gcnewがでてこないやつ) windowsアプリを作成したいのですが、出来ますでしょうか。 2003にすればたぶん大丈夫なのですが、2005でできないでしょうか。 以上よろしくお願いします。

  • Microsoft Visual C# Express EditionでWindowsアプリケーションをつくったのですが、

    Microsoft Visual C# Express Edition で Windowsアプリケーションを作ったのですが、同じソリューション内に「Form1.cs」「Form2.cs」の二つを作って、Form2のコードを作成してそのままF5キーを押しても、最初に作ったForm1の方が実行されます。どうすればForm2を実行できるのでしょうか?

  • MFC,C++/CLI,C#の共存

    CCDカメラからの画像を画像処理ボード(MV-10というボードです)で受け取り、そのデータを使ったWindowsプログラムを開発したいと考えています。 開発はVisual C# 2005か Visual C++ 2005(C++/CLI)で行いたい(理想としては、フォームなど外観はC#、内部処理はC++)のですが、画像処理ボードのライブラリがMFCとなっていました。 色々と調べて、MFCとC++/CLIを共存させることが出来るらしく、またC#とC++/CLIを共存させることも出来るらしいと言うことが分かったのですが、具体多的な方法が分かりません。 具体的な方法が記述されている書籍や、ウェブサイトなどがありましたら、教えていただきたいです。

  • Visual C#でFormに別のクラスからアクセスするには?

    現在Visual C# 2005 Expressで簡単なアプリケーションを作成しています。Formからフォルダを指定して、別のクラス内でFormで指定されたフォルダ内のファイルに対して様々な操作をするといったものです。 そこで質問なのですが、処理するファイルが多いので進行状況をForm上のテキストボックスやステータスバーなりに表示させて意図思い、Formとは別のクラス内に、 Form frm = new Form1(); frm.TextBox1.TEXT = count + "を処理中です。"といったような記述をしても、「静的なメンバが・・・」といったエラーが出てしまいます。 入門者の自分としては、いろいろと調べてみましたが解決できずに困っています。 このような場合、どのようにするとよいのかお力をお貸しください。

  • C# コンソールアプリケーション 追加

    visual studio 2013でC#のコンソールアプリケーションを作成したのですがコンソールアプリケーションにボタンを追加する方法はどうすれば良いのでしょうか?

  • C++/CLIのリソースファイルについて

    C++/CLIのリソースファイルについて質問です。 環境は、Visual Studio 2005のC++/CLIです。 アセンブリリソースファイル(resx)の文字列リソースをEXEファイルをに含めることは可能でしょうか? 含めるか、含めないかの設定はどこで可能でしょうか? 現在は、EXEファイルと同じ場所にアセンブリリソースファイル(resx)がないと例外が発生します。

  • C++/CLIとC#の連携について

    いつも拝見させていただいております。 現在、C++/CLIとC#にて連携を行っているのですが、C++/CLIで作成したクラス配列 がC#側でどのようにすれば受け取れるのか方法がわかりません。 C++/CLIで作成しているクラス配列はSystem::Collections::Generic::Listを使用 して配列化しています。 下記がC++/CLIのソースになります。 List<testClass>^% testClass::GetList() { List<testClass>^ lpTestClassList = gcnew List<testClass>(); testClass^ lpTestClass; lpTestClass = gcnew testClass(); lpTestClassList->Add(lpWatchServiceMasterInfoWrapper); return lpTestClassList; } これをC#側で使用しようとすると下記エラーが発生します。  「この言語によってサポートされていません」 C++/CLI⇒C#間の連携ではListクラスを使用することは不可能なのでしょうか? クラスを配列にして引き渡したいだけなので、他の方法等含めて何か参考になることがありましたら ご教授ください。 よろしくお願い致します。 開発環境  C++/CLI ⇒ DLL(ネイティブなコードを参照するためのラッパー用DLL)  C# ⇒ アプリケーション