Charmy from bangalore Ответов: 3

загрузка изображения .png с помощью OleLoadPicturePath()


Привет,
Я столкнулся с проблемой.Я должен загружать изображения в любом формате и отображать их как контактную фотографию пользователей,где в этой функции OleLoadPicturePath() не принимает изображения в формате .png. Моя основная потребность заключается в том, чтобы прикрепить PNG-изображение к imagelist, который используется для загрузки этого изображения.Поскольку я не использую CImage,лучший способ, который я получил от просмотра, - это преобразовать этот PNG в растровое изображение и прикрепить его к списку изображений.Может ли кто-нибудь сказать мне, как я могу это сделать??Заранее спасибо.

3 Ответов

Рейтинг:
2

emilynx

Загрузите PNG с помощью CreateIconFromResourceEx, а затем добавьте этот значок в свой список изображений.

HICON LoadIconPNG(LPCTSTR lpFileName, INT nWidth, INT nHeight)
{
	HICON	hIcon = NULL;
	HANDLE	hFile;
	DWORD	dwsz, dwbr;
	BYTE	*pb;
	if ((hFile = CreateFile(lpFileName, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL)) == INVALID_HANDLE_VALUE) return (NULL);
	dwsz = GetFileSize(hFile, NULL);
	pb = (BYTE *) malloc(sizeof(BYTE) * dwsz);
	if (!ReadFile(hFile, pb, dwsz, &dwbr, NULL)) { free(pb); CloseHandle(hFile); return (NULL); }
	CloseHandle(hFile);
	hIcon = CreateIconFromResourceEx(pb, dwsz, TRUE, 0x00030000, 0, 0, LR_DEFAULTCOLOR);	
	free(pb);
	return (hIcon);
}


Stefan_Lang

Я сомневаюсь, что ОП все еще будет заинтересован в решении проблемы через 7,5 лет! Пожалуйста, проверьте дату вопроса, прежде чем выдавать решение.

jongman

Ну, по крайней мере, это было полезно для меня.

Спасибо, эмилинкс!

Рейтинг:
1

Volynsky Alex

Что бы вы, вероятно, сделали?

Если этот путь плох :

Изображения класса cimage ;
изображение.Нагрузка(_T("C:\\myimage.png"));
CBitmap растровое изображение;
растровый.Присоединить(рис.Отсоединить());

Итак, попробуйте следующий способ:
Элемент управления MFC picture для динамического отображения изображений в диалоговом окне[^]


С уважением,
Алекс.


Рейтинг:
0

KarstenK

Покажите какой-нибудь код или в чем ошибка? Сжатый png не поддерживается, поэтому вам нужно что-то еще.

Я рекомендую эту статью для проблем с изображением:
http://www.codeproject.com/Articles/1300/CxImage