Problem bei Farben mischen

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Problem bei Farben mischen

    folgende code ist für 2 Farben mischen. Farbe i1 zu 60% und i2 zu 40%

    Hiermit das Code:

    Quellcode

    1. int singleShuffle(int i1_part, int i2_part, int p) {
    2. return i1_part + (i2_part - i1_part) * p / 100;
    3. }
    4. int colorShuffle(int i1, int i2, int p) {
    5. int red = singleShuffle((i1 >> 16) & 255,(i2 >> 16) & 255,p);
    6. int green = singleShuffle((i1 >> 8) & 255,(i2 >> 8) & 255,p);
    7. int blue = singleShuffle((i1) & 255,(i2) & 255,p);
    8. return (255 << 24) | (red << 16) | (green << 8) | blue;
    9. }



    mir ist nicht klar, was Methode singleShuffle gemacht hat
    und die typisch Farbe Mischung wie zum Beispiel undurchsichtiges mit volles Gelb: 255<<24|255<<16|255<<8, Was bedeutet das? ?(?(?(

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Wenn ()

  • Also SingeShuffle mischt einen Farbkanal. Die Rechnung ist ein bisschen komisch aber dort werden die 60% und die 40% zusammengemischt. Bildlich musst du dir die Rechnung so vorstellen, dass links i1_part ist und rechts i2_part und die Funktion den Regler zu 60% nach links verschiebt. Besser kann ich das auch nicht erklären - setz mal ein paar Werte dafür ein, dann merkste das auch. Ein Farbe (ohne Transparenz) besteht aus drei Kanälen Rot, Grün und Blau. Bei euch ist eine Farbe aber 8 Bit (0-255) die ersten 8 Bit vom Integer werden für transparenz verwendet (sind immer aber 1, also keine transparenz). Die Funktion ColorShuffle mischt nun dreimal mit SingeShuffle und sorg dafür dass die Farben an der richtigen Stelle stehen. Ein Integer ist 32Bit in Java und wird bei euch so eingeteilt:

    11111111 | 11111111 | 11111111 | 11111111

    Dazu musst du wissen, dass:
    << bitweises linksschieben
    >> Bitweises rechtsschieben
    & bitweise und-Vernüpfung
    | bitweise oder-Verknüpfung bedeutet.


    Das ganze Bitgefummel in colorShuffle ist also nur da um die jeweiligen Bits der Farbe zu maskieren (und alle anderen zu löschen) und nachher die neue Farbe wieder so hinbasteln, dass alle drei Farben an der richtigen Stelle sitzen.
    ~ mfg SeBa

    Ich beantworte keine PMs zu Computer-/Programmierproblemen. Bitte wendet euch an das entsprechende Forum.

    [Blockierte Grafik: http://i.creativecommons.org/l/by-sa/3.0/80x15.png]