Visual C++ 6.0を使用しており、CImageにアクセスできないCBitmapにjpgをロードするにはどうすればよいですか?jpgファイルをCBitmap(Visual C++ 6.0)にロードするにはどうすればよいですか?
THX
Visual C++ 6.0を使用しており、CImageにアクセスできないCBitmapにjpgをロードするにはどうすればよいですか?jpgファイルをCBitmap(Visual C++ 6.0)にロードするにはどうすればよいですか?
THX
私の知っているネイティブ方法はありません。私は常にJPGとPNGのためにFreeImageを使用しました.PHNGをHBITMAPにロードする方法のFAQのサンプルコードがあります(これはJPGとまったく同じです)。
JPGをリソースとして保存する場合は、JPGリソースタイプを作成して保存してください。BITMAPリソースとして追加しないでください。あなたはそれをロードしようとするあらゆる種類の問題を抱えています。私はそれが明らかに聞こえるが、それを理解するのにはしばらく時間がかかりました。
あなたができない、あるいは少なくとも、ビルド中に方法はありません。 CxImageを見てください。特にjpgのサポートが必要な場合には、おそらく動作させることができます。
この種の変換は複雑なので、私は外部の図書館を利用しています。thisをご覧ください。
私は単にjpgだけでなく他の一般的な形式も読み込むためにOleLoadPicturePath apiを呼び出します。
IPictureオブジェクトにロードした後、get_Handleを呼び出してHBITMAPのハンドルを取得できます。
おかげ
CBitmap bmp;
HANDLE h = ::LoadImage(NULL, _T("c:\\MyImage.jpg"), IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
bmp.Attach(h);
は、jpgではなく、ビットマップのみを読み込むことができます。私は "LoadImage"のためのptを与えたので便利です... thx – jdl
@jdl試しましたか?私は昨日メモリから出ていましたが、私は自分のコードでJPEGを開くための正確なステートメントを書いています: 'm_hDIBSection = LoadImage(NULL、lpszPathName、IMAGE_BITMAP、0、0、LR_DEFAULTCOLOR | LR_CREATEDIBSECTION | LR_LOADFROMFILE); ' –
@jdl、私の謝罪、私はあなたが正しいと思うし、私はその行をコピーしたプログラムはBMPファイルでのみ動作します。この回答を削除することがあります。 –
ほとんどのいわゆるC++コンパイラは完全に標準に準拠していませんが、MSVC 6は古くて壊れており、実際にはC++コンパイラと呼ばれる必要はありません。アップグレード!また、あなたの質問に対する私たちの答えは、VC6ではうまくいかないかもしれないことを認識しておいてください。ここでは、標準のC++、つまりmsvc6よりも3年後、 – PlasmaHH
一部の人々は、VC6が必要なプラットフォームやツールチェーンに縛られています。他の人の状況を却下してはいけません。特に、あなたがそれについて何も知らないのであれば、そうではありません。 – Roel