Störungen, in eigener Transparentz Funktion



  • Original erstellt von <JSFreak>:
    Nicht ganz unrichtig, deine Vermutung ... aber noch lange nicht vollständig! 🙄

    Ach ja?? Dann könntest du sie bitte auch vervollständigen!? Das wäre sicher auch in Timms Interesse.



  • Wenn Timm tatsächlich Interesse bekunden sollte, bekommt er eine eMail ... 🕶



  • Warum willst du uns denn nicht allen die Lösung verraten? 🙄



  • Ich weiß es: weil er keinen blassen Schimmer von einer Lösung hat. 😃



  • Sorry, für meinen späten Post, ich hatte noch viel zu tun, Schule und so!!!

    @WebFritzi, so ganz kapier ich das noch nicht... muss ich dann irgendwo +1 hinterschreiben, oder minus nehmen 🙂

    @<...> Der Link ist gut, habs mir schon angeschaut und downloade mir das grad...



  • Ich zeig dir mal wie ich mir das vorstelle:

    DWORD DWORD_ALIGN(DWORD x)
    {
       if(~(~3 | x) != 3)
          x = ((x >> 2) << 2) + 4;
       return x;
    }
    
    void TransparentBlit(HDC hdc, int destX, int destY, int destWidth, int destHeight, 
                    HDC hdc2, int srcX, int srcY, UINT tranparency)
    {
       // ...
    
       // Loop through the 24 bit image (Times 3 for R G and B)
       int diff = DWORD_ALIGN(3 * destWidth) - 3 * destWidth;
       int p = 0;
    
       for(int i = 0; i < destHeight; i++)
       {
          for(int j = 0; j < destWidth; j++) 
          {      
             if((pBackBits[p]   != GetBValue(tranparency)) || 
                (pBackBits[p+1] != GetGValue(tranparency)) || 
                (pBackBits[p+2] != GetRValue(tranparency)))
             {
                // Assign the desired pixel to the foreground
                pImageBits[p]     = pBackBits[p];
                pImageBits[p + 1] = pBackBits[p + 1];
                pImageBits[p + 2] = pBackBits[p + 2];
             }
             p+=3;
          }  
          p+=diff;
       }
    
       // ...
    }
    

    Besonders die DWORD_ALIGN()-Funktion find ich schön. Hab ich selber gemacht. 🙂 Naja, so ungefähr hab ich's mir vorgestellt.

    [ Dieser Beitrag wurde am 31.01.2003 um 03:54 Uhr von WebFritzi editiert. ]



  • Besonders die DWORD_ALIGN()-Funktion find ich schön. Hab ich selber gemacht.

    Herzlichen Glückwunsch. 😉
    Meine Lösung gefällt mir trotzdem besser, ist nicht so kompliziert:
    Ausrichten auf WORD



  • Das ist ein schönes Makro. Obwohl ich's nicht so ganz verstehe. Meine Funktion verstehe ich mittlerweile aber auch nicht mehr. 😉



  • Hab ich mir grad ausgedacht... Würds das nicht auch einfach tun?

    inline DWORD DwordAlign(DWORD x) {
       while((x % 4) > 0)
         ++x;
       return x;
    };
    

    🙂



  • Nö. Ist falsch! Wenn dann so:

    int DWORD_ALIGN(int x)
    {
       int r = x % 4;
       if(r)
          x += r;
       return x;
    }
    

    Verbraucht aber sicher mehr Rechenzeit, denn man arbeitet nicht so nah an der Maschine.


Anmelden zum Antworten