Hallo, Ich Arbeite mit einem TFT 800x480 mit SSD1963 controller, wollte nun einzelne Elemente in den vordergrund und andere Elemente in den Hintergrund setzten. Zurzeit stehe ich aber auf dem schlauch bei der Umsetzung. kann mir da einer Weiterhelfen oder eine seite emphelen wo das gut beschrieben wird oder ein code wo man schauen kann wie das gemacht wird. mfg
Frank schrieb: > Ich Arbeite mit einem TFT 800x480 mit SSD1963 controller, > wollte nun einzelne Elemente in den vordergrund und andere Elemente in > den Hintergrund setzten. Das geht am einfachsten über die Reihenfolge, in der du die Elemente zeichnest. Immer von "hinten" nach "vorn" zeichnen und du brauchst keine weiteren Klimmzüge.
Ich meinte das so wie im Anhang. Wenn ich zb. zuerst ein Rechteck zeichne dann etwas versetzt noch eins zeichne dann wird ja ein Teil vom ersten Rechteck durch das zweite verdeckt.
Frank schrieb: > Wenn ich zb. zuerst ein Rechteck zeichne dann etwas versetzt noch eins > zeichne dann wird ja ein Teil vom ersten Rechteck durch das zweite > verdeckt. Richtig. Und genau das musst Du ausnutzen, indem Du alle Elemente in ihrer "Z-Order" sortierst und von hinten nach vorne ausgibst.
Rufus Τ. Firefly schrieb: > > Richtig. Und genau das musst Du ausnutzen, indem Du alle Elemente in > ihrer "Z-Order" sortierst und von hinten nach vorne ausgibst. Wie wird das gemacht. Gibs denn irgendwo eine seite wo das Beschrieben ist
Frank schrieb: > Wie wird das gemacht. Du musst schon wissen, welche Elemente wann zu sehen sein sollen, d.h. die Z-Order muss Du selbst festlegen. Einfache Übung: Nimm ein Blatt Papier und ein paar unterschiedlich große Zettel. Das Blatt Papier legst Du auf den Tisch und malst 'ne 0 drauf. Jetzt nimmst Du den ersten Zettel, legst ihn auf das Papier und malst 'ne 1 drauf. Den nächsten Zettel legst Du wiederum auf das Papier und auf den bereits draufliegenden Zettel -- und den beschriftest Du mit 2. Und genau das ist Deine Z-Order. 0 - 1 - 2 Möchtest Du, daß der mit 1 beschriftete Zettel in den Vordergrund kommt, daß also Zettel 1 Teile von Zettel 2 verdeckt, musst Du die Reihenfolge ändern: 0 - 2 - 1 Mehr steckt nicht dahinter.
Aber wenn ich das so mache dann siehs ja nich so wie auf dem bild aus , oder irre ich mich da? Gibs denn irgendwo eine Seite wo das gut beschrieben wird .
ich glaube er will auch wissen wie man das ganze transparent umsetzen kann. Also wie bekomm ich zum Beispiel den Zettel transparent vor die Mauer ...
Martin J. schrieb: > ich glaube er will auch wissen wie man das ganze transparent > umsetzen kann. > Also wie bekomm ich zum Beispiel den Zettel transparent vor die Mauer > ... Ja Richtig . mfg
Wenn du genug Hauptspeicher hast kein Problem. Die Mauer im Speicher des Controllers rendern, die Mischfarbe für das Overlay berechnen. Nur das Gesammtbild an das Display übertragen. (Findet sich unter dem Stichwort Alphakanal). Theoretisch könnte auch das Display Farbmischung mit Alphakanal unterstützen.
... oder jeweils ein Pixel vom Display lesen, nach der Alphakanal-Formel die Mischfarbe berechnen und das Pixel ins Display schreiben.
Ob Transparenz oder nicht - das beschriebene Grundkonzept des nacheinander nach Z-Order ausgebens bleibt bestehen. Nur die jeweilige Ausgabefunktion, mit der die Bildelemente ausgegeben werden, muss dahingehend angepasst werden, daß sie bevor sie ein Pixel ausgibt, den Inhalt des Bildspeichers an der betreffenden Stelle ausliest und das mit dem Wert des neuen Pixels verrechnet - "noch einer" nannte das "Alphakanalformel".
Die Trivial-Version des Alphakanals wäre, dass man nicht die Mauer-Bits im Speicher mit dem Zettel-Bits überschreibt, sondern mit dem Mittelwert aus Mauer und Zettel.
Rufus Τ. Firefly schrieb: > Ob Transparenz oder nicht - das beschriebene Grundkonzept des > nacheinander nach Z-Order ausgebens bleibt bestehen. > > Nur die jeweilige Ausgabefunktion, mit der die Bildelemente ausgegeben > werden, muss dahingehend angepasst werden, daß sie bevor sie ein Pixel > ausgibt, den Inhalt des Bildspeichers an der betreffenden Stelle > ausliest und das mit dem Wert des neuen Pixels verrechnet - "noch einer" > nannte das "Alphakanalformel". Könnte mir denn jemand eine Seite nennen wo dke Alphakanal formel beschrieben wird jnd wie man es in c umsetzt. mfg
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.
