BMP出力 – プログラミング – Home

通知
すべてクリア

[解決済] BMP出力


高橋 正臣
 高橋 正臣
(@高橋 正臣)
ゲスト
結合: 20年前
投稿: 3
Topic starter  

http://rararahp.cool.ne.jp/cgi-bin/lng/vc/vclng.cgi?print+200503/05030058.txt

ここに便乗質問しようとしましたが、済なので新規にしました。
開発環境は WindowsXP VisualStudio.net2003 DirectX9 MFCは使用しています。

僕は CStatic に対してDirectXを使って描画しています。
その描画内容をBMPにして出力したいです。
Google で調べてみてもデバイスコンテキストからビットマップヘッダに結びつけて~
という物しか見つかりませんでした。

やはり参考した所のようにボールサンプルのような手段しかないのでしょうか?
ちと僕には内容が理解できないです・・・(DirectXどこで使ってるのさ!みたいな^^;)


引用未解決
トピックタグ
PATIO
(@patio)
Famed Member
結合: 3年前
投稿: 2660
 

GDIとAPIで簡単に出力というのは無理だと思いますけれど。
ビットマップファイルヘッダとビットマップヘッダを自分でこさえて
ファイルに順次出力し、最後に画素部分をどっと書き込むと言うのが
普通のやり方だと思います。
GDI+を使えば出来たような気もしますが、
そっちは御自分で調べてみてください。
DirectXにファイル出力するための関数が用意されていないのであれば、
DirectXを使っているかどうかは関係ないと思います。


返信引用
高橋 正臣
 高橋 正臣
(@高橋 正臣)
ゲスト
結合: 20年前
投稿: 3
Topic starter  

嗚呼、別の作業をしていて返信遅れました;
PATIOさんありがとうございます。

確かにピクセル情報が取れればいけますね。DirectXに惑わされていました。

m_static.GetDC()->GetPixel( x, y );

で、いけるかなと思ったんですが、そもそもアルファの情報取れなかった。。

そこで CImage にビットをコピーして Save() すればいけそうかなと。
しかし CStatic と CImage を関連付けられなくてハマってます。

取り留めのない文というか失礼な文ですね・・・
もう少し粘ってみます。

なにかアドバイスありましたら宜しくお願いします(o_ _)o


返信引用
高橋 正臣
 高橋 正臣
(@高橋 正臣)
ゲスト
結合: 20年前
投稿: 3
Topic starter  

時間の関係でキャプチャをしてBMPにすることにしました。

# CStatic m_static CImage m_image
{
HDC hdcMem;
SIZE screen;

screen.cx = 640;
screen.cy = 480;
hdcMem = CreateCompatibleDC( m_static.GetDC()->m_hDC );
HBITMAP h = CreateCompatibleBitmap(
m_static.GetDC()->m_hDC, screen.cx, screen.cy
);

if( h )
{
SelectObject( hdcMem, h );
BitBlt( hdcMem, 0, 0, screen.cx, screen.cy,
m_static.GetDC()->m_hDC, 0, 0, SRCCOPY );
}
m_image.Attach( h );
m_image.Save( hoge.bmp );
}

参考ページ
http://www.microsoft.com/japan/developer/winds/Sdk/Samples/SDKSample04.htm

ありがとうございました


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました