TImage / Bild aus Handle laden



  • Hallo,

    habe ein Handle auf ein Bild und würde es gerne in ein TImage laden.

    Image1->Picture->Bitmap->Handle = hImg;

    geht aber nicht!!!!



  • Hab nun nen Weg gefunden, ist aber sehr umständlich!!!!
    Geht es auch einfacher????

    Mein Weg:

    UCHAR       *lpVoid, *pBits;
       int iBytes;
       Graphics::TBitmap *pBitmap;
       LPBITMAPINFOHEADER pHead;
    
    	lpVoid = (UCHAR *)GlobalLock(hImg);
    	pHead = (LPBITMAPINFOHEADER )lpVoid;
    	iBytes = (pHead->biBitCount*pHead->biWidth) >>3;
    	while(iBytes%4) iBytes++;
    	pBits = lpVoid + sizeof(BITMAPINFOHEADER) + sizeof(RGBQUAD)*m_tw->GetPaletteSize(info);
    
       pBitmap = new Graphics::TBitmap;
       pBitmap->PixelFormat  = pf24bit;
       pBitmap->Width  = pHead->biWidth;
       pBitmap->Height = pHead->biHeight;
    
       SetDIBits(pBitmap->Canvas->Handle, pBitmap->Handle, 0,
                 (UINT)pHead->biHeight, pBits, (LPBITMAPINFO)lpVoid,
                  DIB_RGB_COLORS);
    
       Image1->Width = info.ImageWidth+10;
       Image1->Height = info.ImageLength+10;
       Image1->Picture->Bitmap->Assign(pBitmap);
    
       delete pBitmap;
    	GlobalUnlock(lpVoid);
    


  • IcemanX schrieb:

    Hallo,

    habe ein Handle auf ein Bild und würde es gerne in ein TImage laden.

    Image1->Picture->Bitmap->Handle = hImg;

    geht aber nicht!!!!

    Wenn hImg vom Typ HBITMAP ist, sollte das gehen!



  • Und, gibt es nun einen einfacheren Weg?



  • Was geht denn genau nicht bei Deiner ersten, einfachen Variante?


Anmelden zum Antworten