[BCB6] Wyświetlanie nie animowanego gifa

0

Mam na dysku gifa, który jest generowany przez inny program co kilka sekund, potrzebuje go wyświetlić na formie. Gif nie jest animowany jednak nie wiem jak go wczytać do TBitmap. Zna ktoś może jakieś biblioteki pod Borland C++ Buildera 6 pozwalające na wczytanie gifa do bitmapy (załóżmy że tylko pierwszej, w tym wypadku jedynej klatki) ewentualnie jakieś alternatywne rozwiązanie?

0

Może google i hasło TGifImage...
---Archiwum---

0

Można przez OLE

#include <olectl.h>

#define HIMETRIC_INCH 2540
bool GetGIF(Graphics::TBitmap * xBmp, AnsiString xasPath){
    bool bres = true;
    CoInitialize(0);
    IPicture *pic;

    int ilew = xasPath.WideCharBufSize();
    wchar_t * w_path = new (nothrow) wchar_t [ilew + 1];

    if(w_path){

        try{

            memset(w_path, 0, ilew + 1);
            w_path = xasPath.WideChar(w_path, ilew + 1);

            if (!OleLoadPicturePath(w_path, 0, 0, 0, IID_IPicture, (void**)&pic))
            {
                    OLE_XSIZE_HIMETRIC w;
                    OLE_YSIZE_HIMETRIC h;

                    pic->get_Width(&w);
                    pic->get_Height(&h);

                    xBmp->Width = MulDiv(w, GetDeviceCaps(xBmp->Canvas->Handle, LOGPIXELSX), HIMETRIC_INCH);
                    xBmp->Height = MulDiv(h, GetDeviceCaps(xBmp->Canvas->Handle, LOGPIXELSY), HIMETRIC_INCH);

                    pic->Render(xBmp->Canvas->Handle, 0, 0, xBmp->Width, xBmp->Height, 0, h, w, -h, 0);
                    pic->Release();
            }else{
                bres = false;
            }           

        }catch(...){
            bres = false;
        }
                delete w_path;
    }else{
        bres = false;
    }

    CoUninitialize();
    return bres;
}
0
dzejo napisał(a)

Może google i hasło TGifImage...
---Archiwum---

zastanawia mnie czy Ty w ogóle czytałeś ten temat. Gościu na końcu poradził sobie tak, że skonwertował tego gifa w innym programie na bitmapę i ustawił dla jednego koloru kolor przeźroczysty. takie rozwiązanie zupełnie odpada ponieważ gif będzie generowany średnio co jakieś 0,5 sekundy przez zewnętrzny program. TGifImage znalazłem tylko dla Delphi i chyba w delphi napisze ten program bo więcej czasu strace na szukanie odpowiednika dla c++ buildera..

0

zastanawia mnie czy Ty w ogóle czytałeś ten temat. Gościu na końcu poradził sobie tak, że skonwertował tego gifa...

To nie był koniec ...
Ja czytałem ale Ty chyba nie bardzo przecież masz tam kod źródłowy jak wczytać Gif-a i przekonwertować go do Bitmapy a znajduje się on na drugiej stronie tego wątku :
http://4programmers.net/Forum/viewtopic.php?id=136343&start=10

TGifImage znalazłem tylko dla Delphi

I co z tego , ja też - jeśli masz kod źródłowy modułu *.pas to da się taki plik użyć w C++ Builder bez
instalacji komponentu .

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