ドキュメントの画像を 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 を削除.