BitBlt::dwRop Raster Operation Code für weichen Schatten



  • Hi Leute ich dachte mir das ich die Frage hier stelle da ihr mit Bitoperationen beim Blitten und Co mehr macht als die Jungs wie ich aus dem WinAPI bereich. Vorallem soll das ja für ein Spiel genutzt werden.

    Zur eigentlichen Frage:
    Ich möchte eine Bitmap dessen Hintergrund weiß ist mit einer Schattenstruktur in Schwarz auf eine anderen Bitmap blitten, so das Weiß Tranzparent ist (weiß ich wie dies geht) und der Schwarze bereich zum leichten Abdunkeln dient der Ziel-Bitmap an der Stelle wo das Schwarz ist. Man was doof beschrieben aber ich
    denke ihr wießt was ich meine. Welche Raster-Operations-codes von BitBlt soll ich dazu verwenden, "or"xor"and"invert" etc.

    Hat das schonmal jemand gemacht? Mein Wunsch wäre die Ziel-Pixel um die Hälfte zu verdunkeln.

    Danke im Voraus.



  • da fehlen ein paar essentielle kommas im text, ich hoffe aber, ich habe dich richtig verstanden:

    weis=transparent, schwarz=abgedunkelt.

    pseudocode
    for(int i=0;i<size;++i){
    if(maskenpixel[i]==schwarz){
        zielpixel[i].r*=0.5;
        zielpixel[i].g*=0.5;
        zielpixel[i].b*=0.5;
    }
    

    so muss der algo auf jedenfall funktionieren, normales blitten reicht da nicht



  • das ist mir Bekannt 🙂
    aber ich will das aus Leistungsgründen nicht verwenden.
    Es giebt aber die Möglichkeit mit den Rastercodes, ich glaub irgendwie invers ud dann xor/or oder so, es muß nicht 100% zur hälfte verdunkenl, hauptsache man erkennt das dort ein weicher Schatten ist.



  • also so aus der Kopfrechnung her würde ich jetzt mal behaupten << Invers << XOR

    Nun gut da es so jetzt keiner genau weiß, werde ich bei gelegenheit mal die Möglichkeiten durchtesten und hier bekannt geben, falls jemand das selbe fragt.

    cu



  • MiC++ha schrieb:

    Nun gut da es so jetzt keiner genau weiß

    Ok, bin wieder da.

    Neu= (Alt und Maske) oder Bild
    (Maske transparent => weiss; Rest schwarz/ Bild transparent => schwarz; Rest farbig)

    Bye, TGGC (Der Held bei Dir!)



  • sind im moment eigentlich alle so verdammt unruhig?

    22:23:47->frage
    01:48:34->resignation
    zeit unterschied:3:25h und das noch in der nacht wo hier aufm board eh nichts los ist^^



  • @otze

    das hat nichts mit unruhe zu tun, sondern ich wollte mir die Zeit ersparen das
    aus zu probieren, wenn halt vieleicht doch gerade noch jemand da ist (wie du)
    der das mal so ebend aus dem Kopf weiß. Meine Resignation bezieht darauf, das
    ich erst andere Routinen weiter schreibe und mich dann darum Kümmer, daher auch das "jetzt" in meinem Text. 🙂
    Oder bleibst du an einer Routine hängen bis du eine Lösung hast, obwohl du zwischenzeitlich andere Schreiben kannst?



  • um diese uhrzeit würde ich mir wahrscheinlich nicht mal mehr gedanken über einen workaround machen, weil ich nachts lieber schlafe, dann lassen sich solche probleme manchmal sogar aus dem kopf lösen :p



  • Bei mir fängt der Tag an, wenn die Sonne unter geht 😃
    Ich bin ein Nachtmensch.

    So nun genug mit Offtopic 😉


Anmelden zum Antworten