
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で質問しましょう!
似たような質問が見つかりました
- 確定申告 【白色申告】1月に引越したがe-taxでの納付先は新住所でいいのか? 2 2023/02/26 01:47
- Excel(エクセル) エクセル VBA For Next 繰り返しの書き方を教えてください 6 2022/09/01 14:11
- Excel(エクセル) EXCELのグラフを画像(JPG形式)で保存、通常実行がうまく行かない。ステップインはうまく行く 3 2022/08/30 12:06
- Windows Me・NT・2000 IME辞書の単語登録について 3 2022/04/13 14:57
- JavaScript アップロードファイルの種類によって処理を分岐させたいのですが書き方が分からずアドバイスお願いします 4 2023/06/17 19:12
- ホームページ作成・プログラミング 保存したホームページのファイルは何をしている推測できますでしょうか。 1 2023/08/18 15:50
- その他(OS) Windowsで大量の画像サイズを半自動で変更する方法 6 2023/02/17 08:45
- 防犯カメラ・監視カメラ・小型カメラ VHSを高画質な動画ファイルにしたいです。 3 2022/05/06 12:08
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- フリーソフト 倍率自動調整して全画面表示できるフリーの画像ビューアー 1 2023/08/24 10:55
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
HPの画像の位置について
-
イメージマップについて
-
IE10のTIFF画像リンクのメッセ...
-
EXCEL VBA 複数のImageコントロ...
-
PowerPoint VBA で画像の鮮明度...
-
PC版とスマートフォンに対応し...
-
appletviewerだと動作しない??
-
画像が表示されません
-
画像比較
-
MFCでCImageListに画像追加失敗
-
【EXCEL VBA】ダブルクリックで...
-
1枚だけの画像から、4分割し...
-
イラストレーターからHPへの変...
-
「using Windows」でエラーが出る
-
UWSCについて
-
マスク画像の自動作成
-
特殊効果の方法
-
colorbox.js 画像クリックで閉じる
-
リンクを押してスライドを出現...
-
Flash上で輪郭をぼかし背景が透...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
背景画像の繰り返しについて
-
EXCEL VBA 複数のImageコントロ...
-
【EXCEL VBA】ダブルクリックで...
-
uwcs のマクロで画像認識をして...
-
UWSCの画像認識と条件分岐につ...
-
UWSCでループ処理がうまくいき...
-
vb.net 画像の透過について
-
「using Windows」でエラーが出る
-
Excel ユーザーフォームで表示...
-
UWSC 画像判定と条件分岐について
-
uwscの画像認識に失敗します。
-
画像のビット数を変更する方法
-
jqueryスライダーを2段でスライ...
-
画像処理したBitmapをピクチャ...
-
UWSCの色判定
-
UWSCについて
-
スマホでサイトの画像を長押し→...
-
VBAのユーザーフォームのイメー...
-
gif 画像上の ボタンに リン...
-
画像のピクセルデータの取得
おすすめ情報