ドキュメントの画像を DIB に変換するコードで色々と ...
2021/01/28
次の様なエラーの時の対応.
------ ビルド開始: プロジェクト:FBXtoM, 構成:Debug Win32 ------ FBXtoMDg.cpp t:\develop\_.src\__iwao\htmo_th.hxx(35): error C2665: 'ToDIB': 4 オーバーロードのどれも、すべての引数の型を変換できませんでした t:\develop\_.src\__win\m_dc_to.hxx(20): note: 'i_DIB ToDIB(const Memory_DC &)' の可能性があります t:\develop\_.src\_afxw\i_dib_x.hxx(56): note: または 'i_DIB ToDIB(const Image &)' t:\develop\_.src\__win\i_dib_fn.hxx(188): note: または 'i_DIB ToDIB(const HBITMAP)' t:\develop\_.src\__iwao\htmo_th.hxx(35): note: 引数リスト '(MemoryDC)' を一致させようとしているとき ========== ビルド: 0 正常終了、1 失敗、1 更新不要、0 スキップ ==========
原因は i_DIB_x.hxx で,MemoryDC が有効でないため.
i_DIB_x.hxx を読み込む前に MemoryDC.hxx のインクルードが必要.
FBXtoM の場合は,FBXtoMDG.h に次のものを追加.
#if(_MFC_VER >= 0x0700)
#include "Image.hxx"
#include "MemoryDC.hxx"
#endif
BChgN の場合は,BChgNDc.h に追加.
2020/10/13
E_MetaF クラスを作成.
D_Image クラスで使用.
次の様な記述が可能になる.
ヘッダで D_Image Sel_doc ;
ドキュメント指定 Sel_doc.SetDocPath(dropFile.c_str()) ;
描画 Sel_doc.Draw(this->GetSafeHwnd()) ;
以前作成した DImg.hxx の DImage クラスがあるが,ImageDMF などに依存しているため使い勝手が良くなかった.
画像の表示で Image クラスを使用しない場合は D_Image に置き換え可能と思われる.
2020/10/02
i_DIB_Fn.hxx CalcDrawRECT の 2019/11/25 の修正を NOP に.
DIBn.exe などではうまく動作することを確認.
今回の修正前では,原点にずれて表示されていた.
M_DC.hxx
2020/10/01
...\VC_Test\Fill\DIBn の動作がうまくない.
画像の表示位置が正しく求められていない.
i_DIB_Fn.hxx CalcDrawRECT の 2019/11/25 の変更が影響している.
2019/11/25 ::DIB_resize を作成した時の修正がうまくなかったものと思われる.
OpenGL のテクスチャを 2^n とするための Win 環境でのコード.
__GNUC__ は convert コマンドを使用している.
tex_2pow.hxx ::Texture_2_power で ::DIB_resize を呼んでいる.
デバッガでちゃんと調べないとわからないが,::DIB_resize の場合は ::CalcDrawRECT を呼んでないのでは?
つまり ::CalcDrawRECT の 2019/11/25 のコードは必要ないかも.
::Texture_2_power は,幅,高さが 2^n になる様に伸縮させる.
呼んではなさそう.つまり ::CalcDrawRECT の変更コードは必要なさそう.
::DIB_resize は 32 ビット色に対応させることも可能かも?
2020/09/30
MFC を使用した MemoryDC から i_DIB への変換
i_DIB_x.hxx ::ToDIB (const MemoryDC& memDC)
32 ビット以外の時 M_DC_To.hxx にある ::MemoryDC_ToImage を利用.
コードの実装が間違っている?ので 32 ビットしか対応できていない.
::ToDIB (const void* s_bits,const long bitCount,const long width,const long height) を作成.
これを利用することで,Image クラスに依存しなくなるのと MemofyDC_ToImage が不要に.
M_DC_To.hxx を削除.