• 締切済み

DIBフォーマットの読み込みとそれを元にBMPを画面へ表示する方法について

現在DirectDrawスケルトンでDIBフォーマットを元にBMPデータを取り出して、 そのデータを元に画面に表示するまでのプログラムを勉強しています。DIBフォーマットの構造については理解したのですが、取り出したBMPデータのイメージデータ部分をどこにどう設定してどのような手順を踏んでいけば画面にBMPを表示できるのかわかりません。BMPデータを取り出してから画面に表示するまでの流れなどをわかる方がいらっしゃいましたらぜひ教えていただきたいです。 DIBフォーマットの形式は8bitで256色パレットを使用します。 別でパレットをロードする関数は自作してあるので、ヘッダを読み込んだ後はカラーテーブルをとばしてイメージデータを読み込むやり方にしようと思っています。 そこでパレットとイメージデータの各ピクセルが持つインデックス番号を関連づける方法も教えていただけるとありがたいです。 よろしくお願いします。

  • to4
  • お礼率37% (16/43)

みんなの回答

noname#30727
noname#30727
回答No.1

参考 URL の下のほうにある、DirectX 7.0 日本語ドキュメントをダウンロードして、DirectDraw C/C++ チュートリアルあたりを読めば、DirectDraw については、ある程度わかるはずです。 ビットマップのロードに関しては、同ページの DirectX 7.0a SDK をダウンロードして、実行ファイルの拡張子を zip に変更し(古いのでインストールはしない)、DXF\samples\multimedia\ddraw\src\ddex2\ddutil.cpp の DDReLoadBitmap 関数、DDCopyBitmap 関数、DDLoadPalette 関数などが参考になると思います。 自前でビットマップを読み込む場合は、DDReLoadBitmap関数 の LoadImage()の代わりに、CreateDIBitmap() などを使用してイメージデータを元にメモリビットマップを作成します。

参考URL:
http://www.microsoft.com/japan/msdn/directx/downloads.asp

関連するQ&A

  • BMPのフォーマットの詳細について教えてください!

    BMP(といってもいくつかありますねぇ・・) とりあえず、Windowsの独立DIBのBMPで、 RLE圧縮されていないバージョンのBMPのフォーマット(というか仕様?)、 に関する情報、を探しています。 例えば、私がGIF連結システムを作ったときに 参考にさせていただいた仕様は次のようなものでした。 GIF Header Offset Length Contents 0 3 bytes "GIF" 3 3 bytes "87a" or "89a" 6 2 bytes <Logical Screen Width> 8 2 bytes <Logical Screen Height> 10 1 byte bit 0: Global Color Table Flag (GCTF) bit 1..3: Color Resolution bit 4: Sort Flag to Global Color Table bit 5..7: Size of Global Color Table: 2^(1+n) 11 1 byte <Background Color Index> ・・・などなどなど でした。 こういう感じで、BMPのフォーマット仕様書ってネット上にころがってないでしょうか? とりあえず必要なのは、どこのバイナリデータが何を示しているのか? という情報です。 やりたいことは、BMPのパレット番号を(画像を維持したまま) 切りかえるコマンドツールの作成、もしくは同様のコマンドラインツールの入手です。 (今は普通のWindowsツールで、そのツールでは、操作の都合上、連続処理することが出来ないのです) 数百個のBMP画像ファイルのパレット番号を機械的に入れ替えたいので そのようなツールの作成、もしくは入手をもくろんでいます。 いろいろな角度からの解決法を提供していただいても結構です。 Perlで、GDなどを使って簡単に解決できるよ!というご意見や、 C/C++ライブラリでこのように書けば・・・というご意見、 などなどでも結構です。 よろしくお願いします m(_ _)m

  • bmpファイルの明暗の数値化の方法

    A:\pctest.bmp ファイルを (1)取り込んで画面に表示 (2)1pixelの明暗を256段階のデータ(数値)に変換 する方法を教えて下さい 宜しくお願いいたします

  • 画像のファイルフォーマットについて

    HDの信号、YPbPrでキャプチャした画像をファイルにおとしたいのですが どのファイルですればいいのかわかりません。 これまでは.bmpや.tgaでRGB変換しておとしていたのですが、 フォーマットがYPbPr4:2:2 10bitだったりするのでRGBに変換したり またそのファイルをYPbPr変換したりしてLoadする場合 計算上、多少の誤差も生じ、正確な値でデータを得られません。 一応.qtifファイルで、とも考えたんですけど、 分かり易いヘッダ情報の資料なども手元になく半分諦めかけています。 もし、.qtifのヘッダ情報を詳しく知っている方、 もしくはYPbPrも対応しているファイルを知っている方、回答をお願いします。 ちなみに対応して欲しいフォーマットは YPbPr4:4:4 8bit + K8bit YPbPr4:2:2 10bit + K8bit YPbPr4:4:4 10bit Kナシ YPbPr4:2:2 10bit Kナシ(6Pixel/4word) YPbPr4:2:2 8bit Kナシ(2Pixel/1word) です。

  • デスクトップ表示のあと、元の画面にする方法は?

    「W 7」 64bitですが、デスクトップの表示をクリックすると当然ながら今までの画面が 全部消えますね。それらを元のように表示させるのに、タスクバーにある各アイコン を、ひとつづつクリックして表示しています。これらを「ワンタッチ」で表示させるはど うすればよろしいですか。 画面は、「I. Explorer・32bit」、「グーグル クロム」、「Microsoft Outlook 」で、常時全 部で15画面ほど出しています。それに加えて上部のタブにもたくさんあります。

  • illustrator cs4で全画面表示を戻す方法

    Mac、イラストレーターCS4を使用しています。 パレットの下の方にある画面表示を選ぶ所で、 全画面表示にしたら、パレットもボタンも全て消えてしまい、元に戻す事ができず困っています。。 今はExposéでデスクトップを表示し、サファリを起動して投稿しています。元に戻す方法を知っている方いらっしゃいましたら教えて下さい。 よろしくお願いします。

  • 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); } なのですが、これはメインウィンドウでは動くのですが、ダイアログボックスでは動かずこまっています。 どうか、助言のほどよろしくお願いします。

  • フォーマットという表示。

    外国旅行をフジフィルムのファインピックス(スマートメディア)で撮影してきました。 帰宅後、ラップトップ(東芝のカードリーダー付)で読み取りました。このときまだハードディスクへの保存はしませんでした。そのあと、一度はずしておみやげ物を撮影し、また読み取ろうとしたら、フォーマットされていませんとの表示が出ました。 もう一度デジカメにいれてみたら、同じようにフォーマットされていませんと出てしまいました。 パソコンでフォーマットをすればデータはすべて消えてしまうと思ったので、まだフォーマットはしていません。 これは完全に諦めるしかないのでしょうか。 何か元に戻す方法などはないのでしょうか。 せっかくの旅行の画像だったので・・・。 よろしくお願いします。

  • Mac版IEでWeb上のWindowsのbmp画像を表示させられるか

    Mac版IEのデフォルト設定では、Webページに埋め込まれたbmp画像を表示できませんよね。これを表示させる設定は可能でしょうか。 もちろんWeb上での画像フォーマットとしてbmpを使うべきでないことは承知しています。Netscapeでは表示されることもわかっています。また、IEでも、サーバにbmp画像を単体でアップして、それを表示させるのはファイルヘルパーの指定を変更して可能になりました。ただ、htmlに埋め込まれたbmpの表示は、どう設定を変えてみてもできないのです。これは可能かどうかお聞きしたいと思います。IE初期設定のファイルヘルパー設定ダイアログで、「Windows bmp 画像」というのを変更すれば出来るように思うのですが、うまく行きません。そして変更画面ででてくるファイルの種類で、BMP, BMPf, BMPpと3種類ありますが、この違いがわかりません。クリエーターもogleでよいのかどうか… ただ単に、できないのかなと疑問に思ってお尋ねしているだけですので、もしご存知でしたらお教えいただきたいと思います。

    • ベストアンサー
    • Mac
  • TIFF形式のイメージをBMPに変換する方法

    VCにてTIFF(非圧縮、RGB)をメモリに展開する事ができましたが、イメージを画面に表示するためにBMP変換を行いたいと考えています。どなたか、変換アルゴリズムかサンプルプログラムなど有りませんか?

  • バーコードリーダーの読込データを画面表示する

    初めまして、お世話になります。 Visual Basic 6.0で作成した画面のテキストボックスに、 USB接続のバーコードリーダーで読み取ったデータを表示させる アプリケーションの開発を考えています。 画面のテキストボックスに値を直接表示させることは可能でしょうか? あるいは、 一旦どこかの場所にデータが取り込まれて、 その場所にデータがあるかどうかを一定時間毎にチェックして、 データがあれば取り込んで画面のテキストボックスに表示するような イメージでしょうか? また、 バーコードリーダーでスキャンしたデータを 瞬時に画面に表示させることは可能なのでしょうか? スキャンしてから画面表示までに 数秒のタイム差が発生するものなのでしょうか? どなたかご存知の方がいらっしゃいましたら、 ご教授願えませんでしょうか? よろしくお願いいたします。

専門家に質問してみよう