Gdiplus GdipCreateBitmapFromStream utilisation

Résolu
ToutEnMasm Messages postés 587 Date d'inscription jeudi 28 novembre 2002 Statut Membre Dernière intervention 13 décembre 2022 - 12 mai 2013 à 19:13
ToutEnMasm Messages postés 587 Date d'inscription jeudi 28 novembre 2002 Statut Membre Dernière intervention 13 décembre 2022 - 13 mai 2013 à 21:17
Ce bout de code essaye de charger un fichier image (png,jpg..) mis en ressource et d'en sortir un bitmap.
Je connais les intructions à utiliser.
Ce que je ne sais pas ,c'est comment créer le pointeur m'autorisant à utiliser la fonction.
Merci pour la réponse.



#include <windows.h>
//#define GDIPVER 0x109
#include <gdiplus.h>
#include <stdio.h>
#include <conio.h>

using namespace Gdiplus;
#define images 1200

INT main()
{
HRSRC hResource;
HGLOBAL resource;
HGLOBAL PimageFile;
int taille;
int result;
HGLOBAL Hglob;
//Bitmap gdipImage;
LPSTREAM * ppvIStream = 0;
GdiplusStartupInput gdiplusStartupInput;
ULONG_PTR gdiplusToken;

hResource = FindResource(NULL,(LPCSTR)"monimage",(LPCSTR) "IMAGE");
resource = LoadResource(NULL, hResource);
PimageFile = LockResource(resource);
taille = SizeofResource(NULL, hResource);
Hglob = CoTaskMemAlloc(taille);
CopyMemory(Hglob,PimageFile,taille);
result=CreateStreamOnHGlobal(Hglob,TRUE,ppvIStream);
GdipCreateBitmapFromStream(ppvIStream,gdipImage); // comment faire ?

2 réponses

yann_lo_san Messages postés 1137 Date d'inscription lundi 17 novembre 2003 Statut Membre Dernière intervention 23 janvier 2016 26
13 mai 2013 à 20:30
Salut,

Tu peux utiliser un objet Gdiplus::Bitmap avec un construteur qui prend un ptr sur IStream (évite d'utiliser GdipCreateBitmapFromStream qui est récent)

// Il faut activer gdiPlus
Gdiplus::GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);

// Un bitmap
Gdiplus::Bitmap img(*ppvIStream, FALSE);

// Dessine sur un HDC
Gdiplus::Graphics grPanel(hdc);
grPanel.DrawImage(&img, 1, 1, img.GetWidth(), img.GetHeight());

// Il faut fermer gdiPlus
Gdiplus::GdiplusShutdown(gdiplusToken);


bye...
3
ToutEnMasm Messages postés 587 Date d'inscription jeudi 28 novembre 2002 Statut Membre Dernière intervention 13 décembre 2022 3
13 mai 2013 à 21:17
le bout de code pour tranformer un fichier ressource en bmp.

  	hResource = FindResource(NULL,(LPCSTR)1200,(LPCSTR)RT_RCDATA);
      resource = LoadResource(NULL, hResource);
PimageFile = LockResource(resource);
taille = SizeofResource(NULL, hResource);
Hglob = CoTaskMemAlloc(taille);
CopyMemory(Hglob,PimageFile,taille);
result=CreateStreamOnHGlobal(Hglob,TRUE,&ppvIStream);
DllExports::GdipCreateBitmapFromStream((LPSTREAM)ppvIStream,&gdipImage);
DllExports::GdipCreateHBITMAPFromBitmap(gdipImage,&Hbmp,-1);

Vérifier au debugger,on a un BMP en fin de parcours.

a faire:tout libérer
0
Rejoignez-nous