Delphi-PRAXiS
Seite 1 von 2  1 2      

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


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:34 Uhr.
Seite 1 von 2  1 2      

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