
MFCを使ってダイアログアプリを作っています。
やっていることは、CImageListへ画像ファイルの縮小画像(128x128へリサイズ済)を追加し、
CListViewで縮小画像を表示させようとしているのですが、画像が追加されたりされなかったりします。
以下処理内容です。
全部で20個の画像を追加します。(これはフォルダ内にある画像ファイルの数に依存します)
1回の登録する処理では、CImageListが1個、画像ロード用のCImageが1個、CImageの画像を
コピーして縮小画像の転送ソースとして利用するためのCBitmap(+CDC)が1個と、縮小画像を
格納するためのCBitmap(+CDC)が1個あります。
(クラスメンバー CImageList m_ListImages; CBitmap m_BmpBase, CBitmap m_BmpDrawの3つ、
CImageはローカル変数で確保)
※m_BmpBaseとm_BmpDrawには、Blt()を使う為にCDCが1つずつ付けてあります
実行手順)
・画像ファイルをCImageで読み込む
・CImageのBitBlt()でCBitmap(m_BmpBase)へ転送
・CImageの画像をDestroy()で削除
・m_BmpBaseの画像をStretchBlt()で縮小させて、別のCBitmap(m_BmpDraw)に格納
・m_BmpBaseとm_BmpDrawに関連付けたCDCをDeleteDC()で削除
・m_BmpBaseをDeleteObject()で削除
・CImageListへAdd()でCBitmap(m_BmpDraw)を追加
・m_BmpDrawをDeleteObject()で削除
上記動作を20回(20ファイル)行います。
これを実行させると、CImageListへ格納された画像の個数は、5個しか格納されていませんでした。
最初の5個が登録されたと言う訳では無く、1個格納毎にGetItemCount()で格納数を取得して、
テキストファイルに書き出させた所、1,1,1,1,1,2,2,3,3,3,4,4,4,4,4,5,5,5,5,5と、登録2~5個目、7個目、
9~10個目、12~15個目、17~20個目の登録が失敗しているみたいなのです。
また、CImageListへのAdd()のリターン値は-1(失敗)ではなく、0以上の値が返ってきています。
登録できた画像はCListViewに表示されています。
ここで質問ですが、この様にAdd()のリターン値は正常登録を示す番号を返してくるのにも関わらず、
登録ができていない(格納された画像が増えない)原因は何があるのでしょうか?
No.1ベストアンサー
- 回答日時:
CImageクラスが使えるなら CImageクラス2個とCBitmapのポインタ1つでよさそうですが …
CImage img;
CImage Thumb(128, 128, 24);
img.Destroy();
img.Load(sName);
if ( img.IsNull() ) {
HDC hDC = Thumb.GetDC();
img.StretchBlt( hDC, 0, 0, 128, 128 );
Thumb.ReleaseDC();
CBitmap* pBmp = CBitmap::FromHandle((HBITMAP)Thumb);
m_ListImages.Add(pBmp, RGB(0,0,0));
}
といった具合で
何処でエラーになっているのかを特定してみましょう
サムネイルを生成する段階なのか 元のイメージを読み込む段階なのか
イメージリストへの追加で発生するのか
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
gif 画像上の ボタンに リン...
-
C#で画像を他の画像に貼り付け...
-
UWSC 画像判定と条件分岐について
-
EXCEL VBA 複数のImageコントロ...
-
C# Excelのsheetに表示された...
-
VBA シート毎に画像挿入
-
jqueryスライダーを2段でスライ...
-
画像を読み込む順番を指定した...
-
【EXCEL VBA】ユーザーファーム...
-
決められた4つの座標をランダム...
-
背景画像の繰り返しについて
-
自作の地図をグーグルマップの...
-
トリミングで表示した画像をク...
-
ワードプレスで画像を何枚か横...
-
画像処理したBitmapをピクチャ...
-
エクセルのマクロでコンタクト...
-
UWSCでループ処理がうまくいき...
-
bmp形式の画像を色の深さを24ビ...
-
【EXCEL VBA】ダブルクリックで...
-
「ご処理進めて頂きますようお...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
画像のビット数を変更する方法
-
背景画像の繰り返しについて
-
「using Windows」でエラーが出る
-
EXCEL VBA 複数のImageコントロ...
-
【EXCEL VBA】ダブルクリックで...
-
UWSC 画像判定と条件分岐について
-
Excel ユーザーフォームで表示...
-
VBAのユーザーフォームのイメー...
-
MFCでCImageListに画像追加失敗
-
gif 画像上の ボタンに リン...
-
画像のピクセルデータの取得
-
同じ画像を複数回表示させる
-
uwcs のマクロで画像認識をして...
-
UWSC 画像認識で条件分岐
-
vb.net 画像の透過について
-
UWSCでループ処理がうまくいき...
-
UWSC「画像が無い場合」
-
画像比較
-
uwscについての質問です。 画面...
-
生成AI画像について
おすすめ情報