PNG
От: Аноним  
Дата: 07.11.10 21:47
Оценка:
Доброе время суток!

Как на си можно загрузить картинку с ресурсов формата PNG и получить HBITMAP?

на с++ просто:

                IStream* Stream = NULL;
                if (CreateStreamOnHGlobal( Buffer, FALSE, &Stream ) == S_OK)
                    (*Image) = Gdiplus::Image::FromStream( Stream );

...
    reinterpret_cast<PBitmap>(Image)->GetHBITMAP( Gdiplus::Color( 255, 255, 255 ),
                                                  &result );


как такое же сделать на си?

Заранее всем спасибо!
Re: PNG
От: nullptr_t  
Дата: 07.11.10 22:21
Оценка:
покурить libpng
Re[2]: PNG
От: Аноним  
Дата: 07.11.10 23:17
Оценка: -1
Здравствуйте, nullptr_t, Вы писали:

_>покурить libpng


а подсказать поконкретней нельзя ?
Re: PNG
От: BuildAll Россия  
Дата: 08.11.10 00:05
Оценка:
Здравствуйте, Аноним

А что это за С++ такой? C MFC что-ли?
Re: PNG
От: 23W http://kyselgov.pp.ua/
Дата: 08.11.10 09:01
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Доброе время суток!


А>Как на си можно загрузить картинку с ресурсов формата PNG и получить HBITMAP?


А>на с++ просто:


А>
А>                IStream* Stream = NULL;
А>                if (CreateStreamOnHGlobal( Buffer, FALSE, &Stream ) == S_OK)
А>                    (*Image) = Gdiplus::Image::FromStream( Stream );

А>...
А>    reinterpret_cast<PBitmap>(Image)->GetHBITMAP( Gdiplus::Color( 255, 255, 255 ),
А>                                                  &result );
А>


А>как такое же сделать на си?


А>Заранее всем спасибо!


Вы использовали GDI+. Для C вы можете использовать WIC платформу (работа через интерфейсы). Читайте отсюда — http://msdn.microsoft.com/en-us/library/ee719870(VS.85).aspx
Re: PNG
От: algol Россия about:blank
Дата: 08.11.10 13:25
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Как на си можно загрузить картинку с ресурсов формата PNG и получить HBITMAP?

А>на с++ просто:
А>как такое же сделать на си?

Классы GDI+ это просто C++ обертка вокруг обычного API. Смотрите содержимое GdiPlusBitmap.h. Gdiplus::Image::FromStream сводится к вызову функции GdipLoadImageFromStream( stream, &nativeImage ). GetHBITMAP соответствует функция GdipCreateHBITMAPFromBitmap( bitmap, hbmReturn, background). Эти функции объявлены в GdiPlusFlat.h.
Re[2]: PNG
От: Аноним  
Дата: 08.11.10 13:32
Оценка:
Здравствуйте, 23W, Вы писали:

23W>Вы использовали GDI+. Для C вы можете использовать WIC платформу (работа через интерфейсы). Читайте отсюда — http://msdn.microsoft.com/en-us/library/ee719870(VS.85).aspx


то есть GDI+ можно использовать только на с++? и как потом рисовать с помощью WIC платформы?
Re[2]: PNG
От: Аноним  
Дата: 08.11.10 13:49
Оценка:
Здравствуйте, algol, Вы писали:

A>Здравствуйте, Аноним, Вы писали:


А>>Как на си можно загрузить картинку с ресурсов формата PNG и получить HBITMAP?

А>>на с++ просто:
А>>как такое же сделать на си?

A>Классы GDI+ это просто C++ обертка вокруг обычного API. Смотрите содержимое GdiPlusBitmap.h. Gdiplus::Image::FromStream сводится к вызову функции GdipLoadImageFromStream( stream, &nativeImage ). GetHBITMAP соответствует функция GdipCreateHBITMAPFromBitmap( bitmap, hbmReturn, background). Эти функции объявлены в GdiPlusFlat.h.


Спасибо, буду пробовать!
Re[3]: PNG
От: 23W http://kyselgov.pp.ua/
Дата: 08.11.10 13:52
Оценка:
Здравствуйте, Аноним, Вы писали:

А>то есть GDI+ можно использовать только на с++? и как потом рисовать с помощью WIC платформы?


нет конечно, но WIC не ограничивает встроенными в GDI+ кодеками, а позволяет грузить любую статическую графику для которой в системе есть кодек.
Re[2]: PNG
От: Аноним  
Дата: 08.11.10 17:59
Оценка:
Здравствуйте, algol, Вы писали:

A>Классы GDI+ это просто C++ обертка вокруг обычного API. Смотрите содержимое GdiPlusBitmap.h. Gdiplus::Image::FromStream сводится к вызову функции GdipLoadImageFromStream( stream, &nativeImage ). GetHBITMAP соответствует функция GdipCreateHBITMAPFromBitmap( bitmap, hbmReturn, background). Эти функции объявлены в GdiPlusFlat.h.


а можно как-то заинклюдить GdiPlusFlat.h? или нужно все прототипы править?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.