2012-04-10 43 views
4

如何將jpg加載到使用visual C++ 6.0並且無法訪問CImage的CBitmap中?如何將jpg文件加載到CBitmap(visual C++ 6.0)?

THX

+0

大多數所謂的C++編譯器並不完全符合標準,但MSVC 6已經如此陳舊而且破損,實在不配稱爲C++編譯器。升級!另外,要明白我們對你的問題的回答可能不適用於VC6,因爲我們在這裏使用標準C++,後者是三個主要版本,比msvc6年輕14歲。 – PlasmaHH 2012-04-10 12:12:37

+4

有些人被綁定到需要VC6的平臺或工具鏈上。請不要輕視別人的情況,特別是如果你對他們不瞭解的話。 – Roel 2012-04-10 13:18:36

回答

1

有我所知,沒有本機方法。我一直使用FreeImage作爲JPG和PNG--它很強大,常見問題解答中有關於如何將PNG加載到HBITMAP中的示例代碼(對於JPG,其工作原理完全相同)。從經驗警告

一個字 - 如果你存儲你的JPG作爲一種資源,請確保您創建一個「JPG」資源類型,並將其存儲爲,不要試圖將其添加爲位圖資源或你會嘗試加載它的各種問題。我知道這聽起來很明顯,但花了我一段時間才弄清楚。

1

你不能,至少,沒有一個內置的方式。看一下CxImage,你可能會得到它的工作,特別是當你只需要JPG支持。

1

這種轉換非常複雜,所以我會使用外部庫文件進行恢復,看看this

2

我只是簡單地調用OleLoadPicturePath api來加載不只是JPG,但其他常見的格式也。

將它加載到IPicture對象後,您可以調用get_Handle來獲取HBITMAP的句柄。

感謝

1
CBitmap bmp; 
HANDLE h = ::LoadImage(NULL, _T("c:\\MyImage.jpg"), IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE); 
bmp.Attach(h); 
+0

只能加載位圖,而不是jpg。我給了「LoadImage」,因爲它是有用的... thx – jdl 2012-04-11 12:29:50

+0

@jdl你試過了嗎?我昨天從內存中出來,但這裏是我在我自己的代碼中打開JPEG的確切語句:'m_hDIBSection = LoadImage(NULL,lpszPathName,IMAGE_BITMAP,0,0,LR_DEFAULTCOLOR | LR_CREATEDIBSECTION | LR_LOADFROMFILE);' – 2012-04-11 13:30:08

+0

@jdl,我的道歉,我認爲你是對的,我複製該行的程序僅適用於BMP文件。我可能會刪除這個答案。 – 2012-04-11 17:08:04

相關問題