Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   GDI Plus und Masken (https://www.delphipraxis.net/158871-gdi-plus-und-masken.html)

EWeiss 6. Mär 2011 08:34


GDI Plus und Masken
 
Jemand erfahrung wie ich zwei Bilder mit GDIplus kombinieren kann um letztendlich ein
Bild zu bekommen wo die Tranzparenz ausgeschnitten ist?

Mein problem.
Habe eine Klaviertaste erstellt.
Diese wird auch gut angezeigt das problem ist nur das diese alle meine Halbtontasten überlagern.

Diese transparenz muss ich nun wegschneiden.
Es reicht nicht den Bereich nur Tranzparent zu machen denn beim klick auf dem Bild
im Bereich der Transparenz wird das klickevent ausgeführt.


gruss

Bummi 6. Mär 2011 08:56

AW: GDI Plus und Masken
 
Ich fürchte ich habe noch nicht verstanden wie das OnClick und die Transparenzen bei Dir zusammenhängen ? Eigene Graphiccontrols pro Taste?

1.) Regions
2.) oder Volltransparenz (Sinn hängt von der Implemetierung ab)
3.) Alles in einem (Graphic)control abfackeln und die Clicks über einen Record/Array/Liste was auch immmer verteilen
4.) Die Halbtöne zum Schluß, onTop in der benötigten Größe anordnen(sinnhaftigkeit hängt von der Implementierung ab )

EWeiss 6. Mär 2011 09:07

AW: GDI Plus und Masken
 
Zitat:

Zitat von Bummi (Beitrag 1086190)
Ich fürchte ich habe noch nicht verstanden wie das OnClick und die Transparenzen bei Dir zusammenhängen ? Eigene Graphiccontrols pro Taste?

1.) Regions
2.) oder Volltransparenz (Sinn hängt von der Implemetierung ab)
3.) Alles in einem (Graphic)control abfackeln und die Clicks über einen Record/Array/Liste was auch immmer verteilen
4.) Die Halbtöne zum Schluß, onTop in der benötigten Größe anordnen(sinnhaftigkeit hängt von der Implementierung ab )

Das erste bild ist bis auf die Tasten also der Hintergrund voll Transparent.
Wenn ich nun auf diese Taste klicke nachdem ich das Bild der halbtontaste eingeladen habe..
dann wird die Halbtontaste mit dem tranparenten Hintergrund der Weißen Taste überlagert.

Beide Bilder sind als Button ausgelegt und in der reihenfolge der ZOrder korrekt.
Trotzdem überlagert die weiße Taste im Transparenten bereich die Halbtontaste.

Dieser Bereich soll nun wie oben gezeigt mit einer Monomaske ausgeschnitten werden.
Nur wie?
Hab im Netzt nichts gefunden was mir nur annährend weiterhilft.

hab ein Bild.. erstellt

gruss

Bummi 6. Mär 2011 09:37

AW: GDI Plus und Masken
 
Ich vermute das Prinzip ist das gleiche wie bei der GDI-Uhr, dann werden die Alphakanäle hier kombiniert, der Transparente Teil bleibt nach der Addition bestehen. Somit würde ich beim malen entweder die die weißen Tasten clippen, oder den Transparenten Teil der weißen Tasten mit Alpha 255 und RGB=000000 malen, damit sollte der transperente Anteil der schwarzen Tasten nur von diesen kommen....

EWeiss 6. Mär 2011 09:45

AW: GDI Plus und Masken
 
Zitat:

Zitat von Bummi (Beitrag 1086194)
Ich vermute das Prinzip ist das gleiche wie bei der GDI-Uhr, dann werden die Alphakanäle hier kombiniert, der Transparente Teil bleibt nach der Addition bestehen. Somit würde ich beim malen entweder die die weißen Tasten clippen, oder den Transparenten Teil der weißen Tasten mit Alpha 255 und RGB=000000 malen, damit sollte der transperente Anteil der schwarzen Tasten nur von diesen kommen....

JO denke ich auch nur so wollte ich es nicht machen sondern mit einer Maske
welche über BitBlt und SYRCOPY/SCRAND usw...
Der Transparente bereich aus dem Bild ausgeschnitten wird.

Meine Idee ist halt das dies einfacher ist.
Denn ich habe nicht nur ein Bild sondern 2 und zwar rechts und links jeder schwarzen Taste.
Das macht es so schwierig.

Zitat:

damit sollte der transperente Anteil der schwarzen Tasten nur von diesen kommen....
Die haben keinen wenn du dir oben die Bilder anschaust das sind vollausgefüllte Rechtecke. ;)
EDIT:
Ups da ist ja keins .. dann hier.

gruss

Bummi 6. Mär 2011 10:29

AW: GDI Plus und Masken
 
Wie Du den Aplhavalue auf 255 bekommst liegt ja bei Dir, der einfachste Weg wäre IMHO die weißen Tasten entsprechend vorzubereiten......

EWeiss 6. Mär 2011 10:36

AW: GDI Plus und Masken
 
Zitat:

Zitat von Bummi (Beitrag 1086199)
Wie Du den Aplhavalue auf 255 bekommst liegt ja bei Dir, der einfachste Weg wäre IMHO die weißen Tasten entsprechend vorzubereiten......

Hmm ..
Ich glaube wir reden aneinander vorbei.
Siehe Bild!

Ich habe das Bild jetzt mit dem Hintergrund kombiniert.
Der Bereich der vorher Transparent war ist nun weiss
Was ich möchte ist diesen auszuschneiden so das er nicht Transparent ist sondern einfach nicht vorhanden
Quasi eine art (Region).
Das wollte ich mit der Maske realisieren.

Habe aber noch keine Möglichkeit gefunden das mit PNG's zu verwirklichen.

EDIT:
Es gibt doch die möglichkeit irregionale Button zu restellen und was ich habe ist nichts anderes als ein Button.

gruss

Bummi 6. Mär 2011 10:51

AW: GDI Plus und Masken
 
Ich denke wir reden wirklich aneinander vorbei

ich denke die weissen Tasten sahen vorher im Alphakanal ähnlich aus wie aus untern

AA AA 00
AA AA 00
AA AA 00
AA AA AA
AA AA AA
AA AA AA
AA AA AA
AA AA AA

mein Vorschlag wäre gewesen sie derart zu gestalten

AA AA FF
AA AA FF
AA AA FF
AA AA AA
AA AA AA
AA AA AA
AA AA AA
AA AA AA

IMHO ist der Ansatz mit den Buttons ebenfalls nicht optimal gewählt, ich würde alles über ein Graphiccontrol abfackeln, dessen Canvas mit Offset auf Dein Offscreenbitmap verbogen wird, die Tastenerkennung über PointInRegion einer(s) List/Array of Regions .

EWeiss 6. Mär 2011 10:59

AW: GDI Plus und Masken
 
Ich habe eine lösung gefunden.
Ohne irgendetwas am Code zu verändern.

Danke für dein Interesse.. an meiner Frage.

gruss

Florian Hämmerle 6. Mär 2011 13:28

AW: GDI Plus und Masken
 
Und wie lautet die Lösung? Würd mich auch interessieren...

mfg Florian

EWeiss 6. Mär 2011 14:12

AW: GDI Plus und Masken
 
Zitat:

Zitat von Florian Hämmerle (Beitrag 1086217)
Und wie lautet die Lösung? Würd mich auch interessieren...

mfg Florian

Ist doch ganz einfach.
Da meine weissen Tasten Transparent sind und meine schwarzen Tasten überzeichnen.
Habe ich einfach mein Hintergrundbild so ausgelegt das selbst dann wenn der durchsichtige bereich meiner weissen Tasten
die schwarzen überlagern trotzdem die schwarzen Tasten noch sichtbar sind gerade wegen der Transparenz der weissen Tasten.
Das Klavier wird also normal angezeigt da in diesen Fall der Hintergrund (Keyboard) ausschlaggebend ist.

Einen Einfluss auf das Klickverhalten der schwarzen oder weissen Tasten hat das nicht.

Funktioniert weiterhin prächtig.
Hoffe du blickst durch was ich damit sagen will ;)

gruss

Bummi 6. Mär 2011 17:55

AW: GDI Plus und Masken
 
Du lässt erst die schwarzen und dann die weißen malen, habe ich das richtig verstanden?

EWeiss 6. Mär 2011 19:19

AW: GDI Plus und Masken
 
Zitat:

Zitat von Bummi (Beitrag 1086263)
Du lässt erst die schwarzen und dann die weißen malen, habe ich das richtig verstanden?

Nein!
Ich lege hinter meinen Tasten das originale BIld meines Pianos
Dadurch sehe ich die schwarzen tasten trotzdem noch auch wenn die (als Button eingefügte Tasten)
von den weißen überdeckt bzw.. unsichtbar gezeichnet werden.

ist kein overlay sondern in dem fall ein unterlay


gruss


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:50 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz