• ベストアンサー

C言語で画像をウィンドウに表示するやりかたって?

bmpファイルをwindowオープンしたある座標に表示したいのですが、どうすれば表示できますでしょうか? どなたか教えて下さいm(_ _)m

  • dra2jp
  • お礼率27% (168/613)

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

  • ベストアンサー
  • kapisan
  • ベストアンサー率14% (1/7)
回答No.1

これはそこそこ面倒ですよ。 HBITMAP hbmp; hbmp = (HBITMAP)LoadImage(NULL, "loadするファイル名", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE); ここまでで bmp ファイルのロード。 GetDC()かBeginPaint()でhdcを取得した後、 HDC mdc; HBITMAP oldbmp; BITMAP bm; GetObject(hbmp, sizeof(bm), &bm); mdc = CreateCompatibleDC(hdc); oldbmp = (HBITMAP)SelectObject(mdc, hbmp); BitBlt(hdc, x, y, bm.bmWidth, bm.bmHeight, mdc, 0, 0, SRCCOPY); SelectObject(mdc, oldbmp); DeleteDC(mdc); とすると、x,y の位置に画像が表示されます。 hbmp は不要になったら DeleteObject() しましょう。

dra2jp
質問者

補足

すみません、C言語初心者なもので。 今回C言語でテトリスを作ってみました。 C++で作ればなにかしらよりいいものがつくれそうですけど C++を知らないんです・・。 HBITMAP hbmp; ってどういう宣言でしょうか?? int hbmp; や chae hbmp; なら宣言の形がわかるのですが・・・。

関連するQ&A

  • C言語でBMPの迷路を解く。

    こんにちは。私は30代の男性です。 先日はCSVファイルの読み取りについて投稿しましたが、無事解決できました。アドバイスを下さった方々にはお礼申し上げます。 次は、「BMPファイルで書かれた迷路を解く」というようなことを試みています。下がイメージ図になりますが、「□は白」で「■は黒」で「※(ゴール)は青」とします。■が道で■しか進めず、他の道とは交差しない一本道であるとします。表記の都合上、下記だとスペースがありますが、実際はもちろん■は繋がっていますし「□」は白なので、実際は何もみえません。 0 x→ y■□□□□□□□□□□□□ ↓■□□□□□□□□□□□□  ■□□□※■■□□□□□□  ■□□□□□■□□□□□□  ■□■■■■■□□□□□□  ■□■□□□□□□□□□□  ■■■□□□□□□□□□□ 下記のような図を一つ一つ進みながら、左上の座標をx,y=(0,0)として一つ一つ座標を表示しながら進み、「※(青)」で「ゴール」と表示するには、どのようにしたらよいでしょうか? BMPの画像は、交差しない一本道の画像ならどのような画像でも対応できるようにしたいのですが、上下左右どのような動きもしなくてはならないので、どのような条件でどのようにコーディングしたらいいのかわからず悩んでいます。 どなたかよきアドバイスをお願い致します。

  • 10進BASICでの画像回転

    10進BASICで、ファイルから読み込んだ画像を回転させようと次のプログラムをつくったのですが、回転画像は表示されませんでした。 OPTION ANGLE DEGREES SET WINDOW -4,4,-4,4 DRAW sourceimage WITH ROTATE(30) PICTURE sourceimage GLOAD "C:\image.bmp" END PICTURE END かわりに座標軸だときちんと30度回転されて表示されるのですが・・・ OPTION ANGLE DEGREES SET WINDOW -4,4,-4,4 DRAW axes WITH ROTATE(30) END どうしたらファイル画像を回転表示できるのでしょうか?

  • C++の画像表示について

    C++で画像を表示するには、 LoadGraphScreenや DrawGraphなどを使い、左上の頂点座標を入力することで 画像が表示されますが、 その部分を「画像の中心の座標を入力して表示する」にはどうしたらいいのでしょうか? わからなくて困っています。 どなたか教えてください。 よろしくお願いしますm(_ _)m

  • C言語でmspaint を操作できませんか?

    数値計算結果をbmpファイルに保存していますが、計算結果をC言語で  system("mspaint ファイル名"); でbmpファイルを開くと、いつも縮小版でしか表示されません。 C言語で拡大フルスケールで表示できる方法を教えていただけませんか。

  • 親ウィンドウの非表示

    JavaScriptで、 「アドレスバー・ツールバー等非表示でトップ画面を開く」 を以下のように1画面クッションをおいて うまく非表示になったのですが、 クッションをおいた画面が2秒ほど表示されてしまいます。 うまく非表示にする方法をご存知のかた教えてください。 <script language="javascript"> <!-- window.open("","","menubar=no"); if (document.all&&(navigator.userAgent.match(/MSIE (\d\.\d)/),RegExp.$1)>=5.5) {   var w=window.open("","_top")   w.opener=window   w.close() } else {   window.close() } //--> </script> よろしくおねがいします。

  • サーバーに転送しても画像が表示されません

    こんにちは。 HTMLには無知でも詳しくもない、微妙な知識の者です。 先ほどHPを作っていて、サーバーにFFFTPで転送したのですが、他のページはキチンと反映されているのに、1つだけ画像が表示されないページがありました。 画像が壊れてるのではなく、全く存在してないのです。ソースを見ると、画像のIMGタグが入ってません。でもFFFTPで転送したHTMLファイルには確かにタグが表示されているし、転送されたファイルをダブルクリックすると画像は壊れてますが存在はしてます。画像に直接アクセスすると、GIFファイルは表示されませんでした。PNGに変換すると表示されたのですが、貼り付けたHTMLファイルにはやっぱり何もありません。 ブラウザから見たソースに、書いた覚えのないスクリプトがついていたのですが、これが原因なのでしょうか?↓ <script language="JavaScript"> <!-- function SymError() { return true; } window.onerror = SymError; var SymRealWinOpen = window.open; function SymWinOpen(url, name, attributes) { return (new Object()); } window.open = SymWinOpen; //--> </script>

  • windows.open()で一番小さいウィンドウを表示

    javascriptのwindow.openを使って、ものすごく小さい(見えないくらいの)ウィンドウを表示したいと考えています。 windows.open("xxxx","","width=1,height=1")と表示させたのですが、私が希望しているよりも大きかったので質問しました。これが限界なのでしょうか? ※次の処理へ移す為のダミーページとして 利用したいと考えており、できるだけユーザが気づかせたくないため

  • C言語でBMP画像(ファイル)は作れますか?(Unix使用)

    こんにちは。私は30代男性です。 先日はBMPを読み込んでUnix上でイメージ表示するプログラムを作ろうとしていましたが、ようやく完成しました。ご協力いただいた方々にお礼申し上げます。 次にチャレンジしようとしていることは、「BMPファイルに画像を書き出す。」というものです。画像は横4ピクセル・高さ256ピクセルのサイズで、とりあえず1行ずつRBG値を増やして「色の作成」の時に出てくるような長方形型の色指定用のグラデーション表示をしてみようかなと思っています。 →つまり、色の変化はRBG(0,0,0,)からRBG(255,255,255)にずらしていくという感じです(黒→灰色→白とでもいいましょうか)。 これはパレットに設定する値をfor分でループさせればいいかなと思いましたが、プログラムでBMP画像を作り出すことは無理なんでしょうか?ファイルがない状態からファイル名を指定して作るとしたら、offset値をどのように設定したらいいのかなど、わからないことだらけです。 アドバイスを頂けたらありがたいです。どうぞ宜しくお願い致します。

  • Windows2000のエクスプローラの画像表示について

    以前はエクスプローラーにてJPGを選択すると右画面の左側にあるファイルの情報表示欄に画像が表示されていたと思うのですが、OSを入れ直したところ、Bmpしか表示されなくなりました。また、表示で縮小版を選んでも、アイコンのままで表示されません。 (アップデートは最新にしてあります) 何か設定方法があれば、どなたか教えてください。

  • c言語を使いダイアログにbmpを表示したい 

    はじめまして、 私は、c言語は初心者なのでが、ダイアログボックスに、画像(bmp)が表示することができません。 ソースは、 hdc = BeginPaint(hDlg, &ps); //指定ウィンドウ内での描写準備 // ビットマップをファイルからロードする hBitmap = ::LoadBitmap( NULL, _T("test.bmp") ); // ウィンドウのデバイスコンテキストハンドルを取得する hDC = GetDC( hDlg ); // メモリデバイスコンテキストを作成する hCompatDC = CreateCompatibleDC( hDC ); // ロードしたビットマップを選択する GetObject(hBitmap, sizeof(BITMAP), &bmp); // ビットマップをウィンドウに転送する(表示する) if(hBitmap != NULL){ StretchBlt( hDC, 0, 0, 100, 100, hCompatDC, 0, 0, bmp.bmWidth, bmp.bmHeight, SRCCOPY ); SendDlgItemMessage( hDlg, IDC_STATIC, STM_SETIMAGE, IMAGE_BITMAP, (LPARAM)hBitmap); } なのですが、これはメインウィンドウでは動くのですが、ダイアログボックスでは動かずこまっています。 どうか、助言のほどよろしくお願いします。

専門家に質問してみよう