• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:C++での画像切り抜きについて)

C++での画像切り抜き方法と黒い領域の解消

このQ&Aのポイント
  • C++で画像切り抜きする際に黒い領域ができる問題について解説します。
  • 指定した座標を元に画像の切り抜きを行う方法について具体的なコードを示します。
  • 切り抜いた画像の黒い領域をなくす方法についても説明します。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

新しいサイズで作成し直すのは CImage::Create() で。 ただし、すでに作成済みのイメージを破棄しておく必要があると思いますので、以下のような形で作成します。 // 既存のイメージがあれば破棄 if (!img2.IsNull()) { img2.Destroy(); } // 新しいサイズで24bitビットマップ作成 img2.Create(Rcpx-Lcpx, Rcpy-Lcpy, 24); また、もしビットマップをピクチャボックスコントロール(CStatic)に割り当てているのであれば、コントロールの SetBitmap() を呼び出して再度関連付ける必要があります。ピクチャコントロールの変数が pic であるなら以下のように。 pic.SetBitmap(img2);

cap13
質問者

お礼

丁寧なご回答ありがとうございます。 fresh_homepieさんの方法でやりたかった処理ができるようになりました。 また色々と質問させていただくと思いますが、お時間ございましたらご回答よろしくお願いいたします。

その他の回答 (1)

回答No.1

添付画像が見えない状態ですし、メンバ定義等も不明で確かなことは言えませんが… コピーしようとしているサイズ (Rcpx-Lcpx, Rcpy-Lcpy) がコピー先領域のサイズ (jpgHeight, jpgWidth) より小さいために、差分領域が黒くなっているのでしょう。 表示を小さくするのであればコピー先CImage(かな?)をコピーするサイズに合った大きさで作り直す必要があります。 その他には、そもそもコピー元のオリジナルイメージであるはずの img1 自体に線を引いたり点を描いたりしているのもまずいのでは? と思いますが…。

cap13
質問者

お礼

ありがとうございました(^^)

cap13
質問者

補足

ご回答ありがとうございます。 著作権に関するご指摘があったため、添付画像は削除させていただきました。 原因についてはfresh_homepieさんのご指摘通りだと思います。 コピー先CImageをコピーするサイズに合った大きさで作り直すとは具体的にどのようにすればいいのでしょうか。 よろしくお願いいたします。