• 締切済み

画像表示について・・

VisualC++(2003)でピクチャーコントロールに描画をする場合についての質問です。 現在、1枚表示をしています。これはダイアログベースのプログラムなのですがピクチャーコントロールの形式をBitmapにしてImageで使用するものを選択してはめ込み式で表示しています。 この絵を「アニメーション開始(設定をする)」ボタンを押すことでほかのbitmapに切り替えたいのです。 条件判断を行うことでこの2枚を永久にループさせたい(停止ボタンを押すまで・・)と思っています。 知識が乏しすぎるため手順、サンプルとしてのプログラムを書いていただけると幸いです。 もしくは別ウインドウで作ったもの(とある本のとおりの説明で作りました。)をダイアログにはめ込むことは可能ですか?

みんなの回答

  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.2

★追記。 ・もう少し分かりやすい URL を発見! ・下の『参考URL』をどうぞ。→下の方にある『ビットマップを設定』を参考に! ・以上。おわり。

参考URL:
http://www.nitoyon.com/vc/reference/gui/static.htm
  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.1

★『SendMessage』関数または『SendDlgItemMessage』関数で行います。 ・『Bitmap』ファイルのハンドルを hBitmap として、ピクチャー・コントロールの  ハンドルを hPicture とすると次の1行でビットマップを描画(セット)出来ます。 ・『SendMessage( hPicture, STM_SETIMAGE, (WPARAM)IMAGE_BITMAP, (LPARAM)hBitmap );』 ・hPicture は『hPicture = GetDlgItem( hDlg, IDC_PICTURE );』などとして取得するか、  『SendDlgItemMessage( hDlg, IDC_PICTURE, STM_SETIMAGE, (WPARAM)IMAGE_BITMAP, (LPARAM)hBitmap );』 ・とします。→ダイアログの場合は『SendDlgItemMessage』関数の方が楽かもね。 ・『hDlg』はダイアログのウインドウ・ハンドルです。 ・『IDC_PICTURE』はピクチャー・コントロールの ID コードです。 ・以上。おわり。→分からない事がありましたら質問してくださいね。

参考URL:
http://www.kumei.ne.jp/c_lang/sdk4/sdk_349.htm

関連するQ&A

  • VisualC++での画像表示について

    VisualC++初心者ですがBitmap画像をピクチャーコントロールに表示することはできたのですが・・・ファイルからBitmap画像を表示するやり方はどうすればよいのでしょうか?

  • Bitmap画像の消去について

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

  • VisualC++6.0にてボタンにビットマップを表示させる方法

    VisualC++6.0のダイアログベースのアプリにおいて、 フォーム上に配置したボタン上にビットマップを表示 させたいと思ってます。OnPaint()の中で、以下のコード を書いたのですが、うまくいきません。  CWnd* myWnd = GetDlgItem(IDC_BUTTON1);  CDC* pDC = myWnd->GetDC();  CDC myDC;  CBitmap myBMP;  myBMP.LoadBitmap(IDB_BITMAP);  myDC.CreateCompatibleDC(pDC);  CBitmap* oldBMP = myDC.SelectObject(&myBMP);  pDC->BitBlt(0,0,100,100,&myDC,0,0,SRCCOPY);  myDC.SelectObject(oldBMP); ビットマップはちゃんと書かれてはいますが、その上にボタンが 描かれてしまうので、ビットマップが隠されてしまいます。 解決方法を教えてくださいますでしょうか。 よろしくお願いします。 % 絵をクリックするとアクションを起こすようにしたいので、 % ピクチャーボックスでも試してみました。これだとビット % マップはちゃんと表示されますが、BN_CLICKEDを書いて % ピクチャーボックスをクリックしてもOnPict()に処理が % 移りません。

  • タブコントロール上のピクチャーコントロールへの描画

    お世話になっております。 VC2005を使用しております。 SDIベースです。 ダイアログを作成し、その上にタブコントロール(2ページ)を作成しました。 タブコントロールの1ページ目にピクチャーコントロールを配置し、ピクチャーコントロール上に描画を行おうと思うのですが、正常に動作しません。 OnPaintの中で描画を行っているのですがだめのようです。 タブコントロール外に、ピクチャーコントロールを配置すると描画する事ができます。 どのような、タイミングで描画を行えばよいのでしょうか? 教えてください。 よろしくお願いします。

  • ピクチャーコントロールへの描画方法について

    お世話になります、fujitomoです。 現在、Visual Studio2005にてC++のダイアログベースのアプリケーションを作成しており、行き詰った箇所があったため質問させて頂きました。 アプリケーションの内容としては 現在、アプリケーションで、ダイアログベース上にピクチャーコントロールを2つ設置し、それぞれに波形を描画させています。 ピクチャーコントロールへの波形の描画にはメモリデバイスコンテキストを使い、それぞれ波形描画用のCStatic派生クラスを作成し、そのクラスを SubclassDlgItem でメインダイアダイアログのサブクラスとし、描画間隔として、それぞれの描画クラス内で SetTimer(1,10,NULL) でタイマーイベントを起こし、メモリデバイスコンテキストの描画更新をしています。 ここで質問させていただきたい事なのですが、 2つのピクチャーコントロールのうち、1つのピクチャーコントロールへのみ波形描画を実行させているときはピクチャーコントロールの端から端まで描画が約7秒かかるのに対し、 2つのピクチャーコントロールの描画を同時に実行させた場合には端から端までで約11秒もかかってしまいます。 これを何とか、1つのピクチャーコントロールへの描画時間と同じ時間まで早く出来ればなと思っているのですが、どの様に工夫すれば時間短縮をさせることが出来ますでしょうか? 2つのクラスでそれぞれ10msのタイマーを動かしているのが問題なのかと思い、メインダイアログで10msのタイマーイベントを発生させ、それぞれの描画クラスに描画更新のメッセージを送信させるようにコードを変更してみたのですが、やはり同じ結果となりました。 開発環境は Widows CE 6.0 Visual Studio 2005 です。 ご意見、ご回答をお待ちしております。よろしくお願い致します。

  • VC6++を使っています 画像ファイルの読み込み

    MFCのダイアログを使っています。 ボタンを1個とピクチャーを1つ配置しました。 ボタンを押すと、指定した場所のファイルをピクチャー領域に表示します。 色々調べたのですが、どうやったらいいか分かりません。 すいませんがサンプルとか教えていただけないでしょうか? CImageを使うのかな? その辺も少し教えていただければ幸いです。 よろしくお願いします。

  • Visual C++でフォント変更

     VisualC++.NETでダイアログベースのアプリケーションを作っています。しかし、ボタンや、スタティック・テキストなどのコントロールのフォントが、プロパティを見ても変更できません。  以前、フォントはプログラムコードでしか変更できないという話をきいたことがあるのですが、どうなのでしょうか?  もしそうだとしたら、どのようなことをすればフォントが変更できるのでしょうか?

  • ダイアログベースのexeで最適なグラフ表示方法

    C++で外部I/Oを制御し、温度入力とヒーター等のON/OFFを行う制御ソフトを作成しました。 ボタン操作などが多い都合上ダイアログベースのexeにしたのですが、制御履歴をグラフィカルに表示したいと考えています。 現状はピクチャーコントロールに固定の倍率で描画する方法を考えていますが、スクロールバーを表示してスクロールが出来ればさらに便利になります。 良い方法をご存じの方いらっしゃいましたら教えて頂けないでしょうか。

  • VC++ダイアログボックスの表示更新がわかりません

    現在ダイアログボックスにスタティックコントロールを配置し、表示更新する際不明な点があります。VC6.0 MFCです。 1、ダイアログボックス上のコントロールに、作成したビットマップを表示させる際、OnInitDialog関数内で、Bitbiltしていますが、表示されません。 ボタンクリックイベント等で、同様の手順でBitbiltすると表示されます。 これはなぜなのでしょうか? また、ダイアログボックスが表示された際にBitmapを表示するにはどうすればよいでしょうか? 2、また、表示されたBitmapはダイアログボックスを動かしたり、隠れたりすると消えてしまいます。 再表示を自動的にさせるにはどうすればよいでしょうか?(OnDraw関数のようなものがあるのでしょうか?) 初歩的な質問で申し訳ありませんが、よろしくお願いいたします。

  • Visual C++ で画像表示

     非常に初心者な質問で申し訳ないのですが、Visual C++.NETで画像を表示させるプログラムの作成の仕方がわかりません。  作っているプログラムはダイアログベースで、ダイアログの中にイメージボックスとコマンドボタンが貼り付けてあります。実行した際にコマンドボタンを押すと、ある画像がイメージボックスに表示されるようにしたいのです。  ライブラリや本をいろいろ調べたのですが、具体的なやり方まで示してくれる本は残念ながら出会えませんでした。  どなたか教えてください。よろしくお願いします。

専門家に質問してみよう