VC++のマネージ形式でのビットマップフォーマット表示に関する課題

このQ&Aのポイント
  • VC++のマネージ形式でのビットマップフォーマット表示に関する課題があります。
  • ピクチャーボックスに表示したbmpファイルからボタンを使って情報を表示する課題です。
  • 現在ピクチャーボックスから画像を表示できるが、マネージ形式で色の情報を表示する方法がわかりません。エラーが発生します。
回答を見る
  • ベストアンサー

VC++のマネージ形式での課題で・・・。

VC++で、ビットマットフォーマットをマネージ形式でをする。課題がでました。 課題は、ピクチャーボックスにbmpファイルを表示して、表示したbmpからボタンを使って、ラベルや、テキストボックスに、そのbmpのバイト数や、画像に関する、情報を表示する課題です。 今は、ピクチャーボックスから画像を出すことはできたんですが、その後にどうやって画像に関する色のバイト数や、情報をマネージ形式で表示するかわかりません。 プログラムつくってもエラーばっかでわかりません。 例として、ボタン1をクリックして、ボタン1でラベルにbmpのバイト数を出したいんですがエラーします。 プログラム例は、  botton1 click ・・・ { bitmap^bmp; bmp = Bitmap("bmpのファイル名"); label1->Text = bmp; }   これで、ずっとエラーします。誰か適切なアドバイスください。いろいろサイトみてもMFC形式のやりかたばかりでわかりません。 マネージ形式でのやり方を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • D-Matsu
  • ベストアンサー率45% (1080/2394)
回答No.4

> label1->Text = bmp.toString(); #3で訂正した通りString::Format()を使ってください。 label1->Text = String::Format("... {0}", bmp); ただ、bmpをStringに変換してもクラス名の"System.Drawing.Bitmap"になるだけです。 ↓のプロパティ一覧から欲しいものを選んで変換してください。 http://msdn.microsoft.com/ja-jp/library/system.drawing.bitmap_members.aspx

maru_min
質問者

補足

label1->Text = String::Format("... {0}", bmp);の ("... {0}", bmp);この部分で、"... {0}"て何がはいるんですか?? スイマセン。僕、学校で初心者なのに本よんで課題つくれっていわれて、参考書にはMFC形式?しか書いてなくて、初心者なんでいろいろ教えてくれませんか??

その他の回答 (4)

  • D-Matsu
  • ベストアンサー率45% (1080/2394)
回答No.5

> ("... {0}", bmp);この部分で、"... {0}"て何がはいるんですか?? 「{0}」が最終的に「bmp」から文字列(#4で書いた通りSystem.Drawing.Bitmap)に変換されます。 "..."の部分は適当に書いてください、ってことです。 ここで一問一答を繰り返すのもなんですので、とりあえず先に提示しているMSDN Libraryをよーく読んでください。 意外とサンプルプログラムも多いんで勉強になりますよ。

maru_min
質問者

補足

わかりました。親切にしてくださってありがとうございます。

  • D-Matsu
  • ベストアンサー率45% (1080/2394)
回答No.3

あ、もう一つの方も間違ってますね。 > ToString()で StringへはString::Format()で変換します。

  • D-Matsu
  • ベストアンサー率45% (1080/2394)
回答No.2

うっかりC#のコードを見てしまったので先の回答には誤りがあります。 > bmp = new Bitmap("bmpのファイル名"); bmp = gcnew Bitmap("bmpのファイル名"); です。 で、「どこで、どんな」と書いた通り「エラーの出るコード」だけでも「エラー内容」だけでも駄目なんですよ。 ちゃんと、「エラー内容とそれに対応するコード」を提示してください。

maru_min
質問者

補足

すいません。今日休みなんで、コードとか明日でも大丈夫ですか?? 学校に行かないとみれないんです。見てもらってるのにすいません。 後、質問したいんですが、Bitmapのバイト数は、 label1->Text = bmp.toString(); で表示できますか??

  • D-Matsu
  • ベストアンサー率45% (1080/2394)
回答No.1

困った時のMSDN。 http://msdn.microsoft.com/ja-jp/library/system.drawing.bitmap.aspx > プログラムつくってもエラーばっかでわかりません。 「どこで、どんな」エラーが出てるのかを書いて頂けないと回答のしようもないのですが、とりあえず出てるコードの中では…… > bmp = Bitmap("bmpのファイル名"); bmp = new Bitmap("bmpのファイル名"); でなくて大丈夫ですか? > label1->Text = bmp; StringにBitmapを入れようとしているので型不一致エラーが出てくれなければ困ります。 適当なプロパティをToString()で文字列に変換して入れましょう。

maru_min
質問者

補足

エラーは、SYstem::Bitmapは、System::Bitmapに変換できませんてでます。

関連するQ&A

  • VC++で困ってます・・・。

    VC++で、ビットマットフォーマットをする。課題がでました。 課題は、ピクチャーボックスにbmpファイルを表示して、表示したbmpからボタンを使って、ラベルや、テキストボックスに、そのbmpのバイト数や、画像に関する、情報を表示する課題です。 今は、ピクチャーボックスから画像を出すことはできたんですが、その後にどうやって画像に関する色のバイト数や、情報を表示するかわかりません。 どこを、いじってプログラムを作っていくかもわからない状況です。 初心者なんで、プログラムの例や、ビットマップファイルに使うプログラムとかいろいろ教えてください。

  • vc++にて、画像の色の情報表示プロパティをおしえてください。

    vc++のマネージ形式で,bmpやjpgの画像からこの画像は、4byte、あの画像は24byteとの色情報が使われてるとか色情報をbuttonを押してlabelに表示したいのですがどのプロパティを使えばいいかわかりません。MSDNでも探しましたけどわかりませんでした。初心者なので適切に教えてくれたらうれしいです。

  • Bitmap画像の消去について

    やりたいこととして Bitmap画像を表示する前になにかしら背景が描画されています。 そしてボタンを押すとか何かしらイベントが起こったときにBitmap画像を描画します。 そしてまたボタンを押すと背景はそのままでそのBitmap画像だけを消去する ということがしたいです。 今、ピクチャーボックスを使ってBitmap画像を表示することはできます。 ただそのBitmap画像を消去することはできていません。 探しているとピクチャーボックスを白く塗りつぶして、背景を再描画するって方法はあるのですが、いろいろあってその方法は使いたくないです。 Bitmap画像だけを消去する方法はあるのでしょうか? OSはVistaで、VC++2003.netを使っています。 宜しくお願いします。

  • プログラムで、bmpをjpgに替えたらエラーして困ってます・・・。

    マネージ形式でbmpの画像の情報をlabel1などで表示できたんですけど、ファイル名の形式をjpgにしたら、情報が表示できずにエラーしました。 どこがまちがってるか、教えてください。 エラーした、プログラムをのせるんでアドバイスお願いします。 private: System::Void button3_Click(System::Object^ sender, System::EventArgs^ e) {   Bitmap^image2; image2 = gcnew Bitmap( "画像名.jpg");   pictureBox1->Image = image2;        label3->Text = String::Format("幅(width) 高さ(height): {0}", image2->Size); } この、プログラムで、bmgの時は、image2 = gcnew Bitmap( "画像名.bmp");で、組んでエラーはなっかたんですけど、jpgの時は、image2 = gcnew Bitmap( "画像名.jpg");でしたら、エラーします。 MSDNで探してもわからず、色々試したんですがエラーしかでません。 ネットで検索してもあまりいい例が見つかりませんでした。適切なアドバイスお願いします。

  • 【VC++6.0 MFC】画像表示について

    お世話になっております。C++初心者です。 とある開発でVC++6.0のMFCを利用して画像表示を行う作業をしています。 リソースファイルを使用せず、 外部の画像ファイルを読み込みピクチャーボックスに表示しなければならないのですが、 下記の関数を呼び、BMPファイルを読み込み、 NULLの場合はエラーメッセージを表示するようにしているのですが、 必ずNULLが返ってきてしまいます。 何が問題なのかもわからず苦戦しております。 知識不足で申し訳ないのですが、お願いします。 【疑問点】 ・画像ファイルの指定は絶対パス?相対パス? ***問題の箇所*** HBITMAP hBmp; // ビットマップハンドル // ビットマップのハンドル取得 hBmp = (HBITMAP)::LoadImage(AfxGetInstanceHandle(),"1.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE); // ハンドルのチェック if(hBmp == NULL) {   AfxMessageBox("読み込みに失敗しました");   return ; }

  • C#でピクチャーボックスに文字を描画、出力する方法

    以下のことをやりたいのですが、できなくて困っています。 Microsoft Visual Studio 2010 Expressを使っています。 1、ピクチャーボックスに色画像を表示 2、ピクチャーボックスに文字(説明)も表示 3、その画像を出力 2まではできたのですが、2までできたあとに、プログラムのウインドウ上に他のウインドウ(マイコンピュータやマイドキュメントなど)が表示されたり、プログラムのウインドウを最小化したりして、一度隠れてしまうと文字が消えてしまうようで、画像のみの出力になってしまいました。(画像のみの出力には成功しています) なんとかして出力する方法はないでしょうか。 以下がソースです。よろしくお願いします。 ボタン1 Bitmap bmp6 = new Bitmap(800, 600); int sr, sg, sb, i, j; sr = 100; sg = 100; sb = 100; for (i = 0; i < 40; i++) { for (j = 0; j < 40; j++) { bmp6.SetPixel(i, j, Color.FromArgb(sr, sg, sb)); } pictureBox1.Image = bmp6; } ボタン2 string s1 = "文字"; Font newfont = new Font("MS明朝", 10); pictureBox1.CreateGraphics().DrawString(s1, newfont, Brushes.Blue, 50, 200); ボタン3 pictureBox1.DrawToBitmap(bmp, new Rectangle(0, 0, 800, 600)); bmp.Save(c:\\a.png);

  • VC++2005で高解像度画像の取り扱い。

    いつも質問ばかりで申し訳ないのですが、独学で勉強していて聞ける人がいないので協力して頂けたらと思います。 VC++2005のOS Windows32bit環境で高解像度(10240pixel × 10240pixel以上)の画像を取り扱うにはどうしたら良いのでしょうか? Bitmap^ bmp = gcnew Bitmap( 10240, 10240 ); ~省略 pictureBox1->Image = bmp ; のような書き方をして、エラーが出てる場所は Bitmap^ bmp = gcnew Bitmap( 10240, 10240 ); の部分です。 Bitmap^ bmp = gcnew Bitmap( 5120, 5120 ); だと平気です。 メモリーが不足しています。と警告が出てるのですが、はやり32bit環境では限界なのでしょうか? PCには8GB(うち5GB、RAMディスク)のメモリーを積んでますが、そう言う問題でもないですよね。 PhotoShopやAftterEffectとかはかなりの高解像度でも表示出来てるので不可能では無いとは思うのですが、初心者レベルでは無謀なのでしょうか? 何か打開策があれば教えて頂けたら助かります。 よろしくお願いします。

  • vc++のペイント処理。

    VC++のマネージ形式でピクチャーボックスにMousDownした時にMouseMoveを使って、絵で落書きするんですが、デバックして絵を書いた後、Formを最小化した後、元に戻すと、絵を書いたのに、書いた絵が消えてます。この時の絵を書くときには、PenとGraphicと配列処理(<arry> Point)を使いました。 今度は、SetPexelを使ってプログラムをくんで、Bitmapとして処理したら、pictureBoxにMousuDownして絵を書くと、点みたいに書けてゆっくりMousuDownしてるときは、線をかけるんですが、早く書こうとすると点々みたいのでかけますし、最小化しても消えません。 前者の方法だとスムーズにかけるんですが、消えちゃいます。 後者の場合はゆっくり書けば何とか線は書けるんですがスムーズに書けません。 どうしたら、最小化しても消えずにスムーズにかけますか?? 書ける方法てあるんですか??

  • VC++でマウスホイールイベントを使いたいのですが

    VC++2010のフォームアプリケーションについての質問です。 フォームに設置したピクチャーボックス上でマウスホイールをすることで、ピクチャーボックスに表示されている画像(BMP)を拡大・縮小できるようにしたいのですが… 色々と試しているのですが、 ・マウスホイールのイベントが反映されない ・拡大縮小のやり方がわからない です。 どなたかご教授頂けると幸いです。

  • 画像処理したBitmapをピクチャボックスで表示すると、例外が発生して

    画像処理したBitmapをピクチャボックスで表示すると、例外が発生してしまいます。 使用言語はVC#、開発環境はVisual Stdio 200です。 コードは以下の通りです。 class MyClass { Bitmap bmp_result;  public MyClass() { bmp_result = new Bitmap(1024,768,PicelFormat.24bpprgb); } while (true) { ・スクリーンショット画像を撮影し、bmp_resultに格納 ・bmp_resultに対して画像処理  //結果をピクチャボックスに表示。 Invoke(new UpdateDelegate(UpdateUI)); } private void UpdateUI() { pictureBox1.Image = this.bmp_result; } } 実行すると、 bmp_resultに対する画像処理のところで 「オブジェクトは現在他の場所で使用されています。 」 という例外が発生してしまいます。 invokeをコメントアウトすると、例外は発生しなくなります。 よって、UpdateUI関数と、無限ループ内の画像処理とが衝突しているのではないかと 思っているのですが、どう直せば解決するのかわかりません。 どなたかアドバイスをください!

専門家に質問してみよう