[vcpp + DX] jpg/gif na powierzchnie?

0

Jak w temacie.. W jaki sposob wpakowac zdjecie z pliku w formacie jpg i/lub gif na powierzchie Direct Draw.

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...

1 użytkowników online, w tym zalogowanych: 0, gości: 1