DrawTransparentBitmap funktioniert nicht



  • Hallo!
    Ich wollte testweise Bitmaps an einer Stelle transparent lassen und benutze die Aldi Lösung von Microsoft mit DrawTransparentBitmap! Jedoch wenn ich die Farbe dann angebe wird das gesamte Bild transparent gezeichnet - na super! Woran kann das liegen?

    Kevin



  • Original erstellt von Surkevin:
    Jedoch wenn ich die Farbe dann angebe wird das gesamte Bild transparent gezeichnet

    😕



  • Naja ich verwende die Funktion, gebe ein Colorref beim auffruf an und das gesamte Bitmap wird transparent gezeichnet...also es wird keins gezeichnet so zu sagen



  • Ich würd eher sagen, es wird tatsächlich keins gezeichnet, und du machst irgendwas falsch. Du meinst doch das Beispiel aus der FAQ, oder?

    [EDIT]
    Ah ne, is ja garnich in der FAQ. Aber ich weiß jetzt, was du meinst. Vielleicht solltest du noch nen Link posten für die, die es nicht wissen.
    [/EDIT]

    [ Dieser Beitrag wurde am 22.04.2003 um 00:50 Uhr von WebFritzi editiert. ]



  • hmmmm ich glaub nich dass da was falsch ist!
    Hier der Code:

    HDC hDC = GetDC(hWnd);  
    COLORREF color = RGB(255,0,0);
        hBitmap = (HBITMAP)LoadImage(0, "haus.bmp",IMAGE_BITMAP, Bitmap.bmHeight, Bitmap.bmWidth, LR_LOADFROMFILE);
        DrawTransparentBitmap(hDC, hBitmap, 25,25, color);
    

    ich weiß nich was daran falsch sein könnte...wenn ich BitBlt verwende zeichnet er mir das Bitmap! Zum Vergleich:

    HDC hDC = GetDC(hWnd);
        COLORREF color = RGB(255,0,0);
        hDCComp = CreateCompatibleDC(hDC);
        hBitmap = (HBITMAP)LoadImage(0, "haus.bmp",IMAGE_BITMAP, Bitmap.bmHeight, Bitmap.bmWidth, LR_LOADFROMFILE);
        GetObject(hBitmap, sizeof(Bitmap), &Bitmap);
        SelectObject(hDCComp, hBitmap);
        BitBlt(hDC, 25, 25, Bitmap.bmHeight, Bitmap.bmWidth, hDCComp, 0,0,SRCCOPY);
    

    Danke für eure Hilfe

    Kevin



  • HI!
    Habe den Fehler nun gefunden, ich durfte nicht
    GetObject(hBitmap, sizeof(Bitmap), &Bitmap);
    SelectObject(hDCComp, hBitmap);
    verwenden....
    Kevin



  • Hattest du in deinem Code ja auch ned gemacht. 😕



  • Als ich den gepostet hab hab ich gemerkt dasses sinnlos ist aber dachte nicht dass es eine Fehlerquelle sein könnte 😃



  • Ne, du verstehst mich nicht.

    HDC hDC = GetDC(hWnd);  
    COLORREF color = RGB(255,0,0);
    hBitmap = (HBITMAP)LoadImage(0, "haus.bmp",IMAGE_BITMAP, Bitmap.bmHeight, Bitmap.bmWidth, LR_LOADFROMFILE);
    DrawTransparentBitmap(hDC, hBitmap, 25,25, color);
    

    Da hast du doch garkein GetObject() usw. drinne.



  • Doch ich versteh dich schon!
    Ich habe meinen Code gecopyt - gesehn dasses drin is und dann rausgenommen weil ich dachte es sei sinnlos aber keine Fehlerquelle 🙂

    Jaja solche Vorteile bietet das Poste *g*

    Kevin



  • OK, verstehe. 🙂 Wichtig war dabei sicherlich diese Zeile:

    SelectObject(hDCComp, hBitmap);
    

    Denn in DrawTransparentBitmap() wird dein Bitmap in ein DC gesteckt. Demnach wird vorausgesetzt, dass das Bitmap in keinem DC drinne ist.


Anmelden zum Antworten