Jak w temacie.. W jaki sposob wpakowac zdjecie z pliku w formacie jpg i/lub gif na powierzchie Direct Draw.
0
0
Dla zainteresowanych... znalazłem kawalek kodu ktory wczytuje jpeg i zwraca je jako hbitmap:
HBITMAP LoadAnImage(char* FileName)
{
// Use IPicture stuff to use JPG / GIF files
IPicture* p;
IStream* s;
HGLOBAL hG;
void* pp;
FILE* fp;
// Read file in memory
fp = fopen(FileName,"rb");
if (!fp)
return NULL;
fseek(fp,0,SEEK_END);
int fs = ftell(fp);
fseek(fp,0,SEEK_SET);
hG = GlobalAlloc(GPTR,fs);
if (!hG)
{
fclose(fp);
return NULL;
}
pp = (void*)hG;
fread(pp,1,fs,fp);
fclose(fp);
// Create an IStream so IPicture can
CreateStreamOnHGlobal(hG,false,&s);
if (!s)
{
GlobalFree(hG);
return NULL;
}
OleLoadPicture(s,0,false,IID_IPicture,(void**)&p);
if (!p)
{
s->Release();
GlobalFree(hG);
return NULL;
}
s->Release();
GlobalFree(hG);
HBITMAP hB = 0;
p->get_Handle((unsigned int*)&hB);
// Copy the image. Necessary, because upon p's release,
// the handle is destroyed.
HBITMAP hBB = (HBITMAP)CopyImage(hB,IMAGE_BITMAP,0,0, LR_COPYRETURNORG);
p->Release();
return hBB;
}
Aczkolwiek jest to rozwiazanie dosyc proste i mało optymalne, zna ktos cos lepszego/szybszego?
Potrzebuje kodu ktory bedzie potrafil SZYBKO wczytywac i wklejac jpegi na surface ddraw :/. Z tym kodem opoznienie jest kilkusekundowe :D...