Seite 1 von 1

GELÖSCHT

Verfasst: 05.07.2013 23:57
von mirca
GELÖSCHT

Re: schwarze Farbe von GrabSprite transparent machen?

Verfasst: 06.07.2013 10:17
von Drago
Syntax

TransparentSpriteColor(#Sprite, Farbe)

Beschreibung

Ändert die transparente Farbe des Sprites (wenn es mittels DisplayTransparentSprite() angezeigt wird). RGB() kann verwendet werden, um einen gültigen Farbwert zu erhalten. Eine Tabelle gebräuchlicher Farbwerte finden Sie hier.

Wird #PB_Default als #Sprite Parameter verwendet, dann wird die Standardfarbe (normalerweise schwarz (0,0,0)) auf die neu angegebene Farbe geändert und alle zukünftig geladenen Sprites (mittels LoadSprite()) benutzen diese Farbe als transparente Farbe.

Unterstützte OS

Alle

GELÖSCHT

Verfasst: 06.07.2013 11:13
von mirca
GELÖSCHT

GELÖSCHT

Verfasst: 06.07.2013 11:49
von mirca
GELÖSCHT

Re: schwarze Farbe von GrabSprite transparent machen?

Verfasst: 06.07.2013 11:59
von KeyKon
Also ich kann dir die Antwort leider auch nicht geben, da ich selber nicht weis wie es geht, oder ob es geht.
Aber der Antworter davor ging nicht davon aus, dass du das Sprite speichern willst, da das in deinem ersten Post nicht so rauskam ;)
Das was du machen willst geht auf jeden Fall nicht mit TransparentSpriteColor, da das meines wissens nur festlegt, wie das Sprite gerendert wird, ohne den Alpha-Kanal tatsächlich zu benutzen.

Du musst also quasi den Alpha-Kanal des Sprites bearbeiten, wie das geht weis ich auch nicht, das Speichern sollte aber laut PB-Hilfe bei PNG den Alpha-Kanal dann mitspeichern können...

LG KeyKon

GELÖSCHT

Verfasst: 06.07.2013 12:11
von mirca
GELÖSCHT

Re: schwarze Farbe von GrabSprite transparent machen?

Verfasst: 06.07.2013 13:14
von Kevin
mirca hat geschrieben:Oh stimmt. Mein Fehler. Du hast recht.
Ich habe das irgendwie vergessen dazu
zu schreiben. :oops:

Was ich auch schon probiert habe war:
Ich habe ein Sprite mit #PB_Sprite_Texture
und #PB_Sprite_AlphaBlending erstellt und
habe einzelne Pixel vom anderen Sprite
einzeln kopiert und Pixel die schwarz sind
habe ich nicht übernommen. Der Hintergrund
war trotzdem schwarz. Man kann das ganz
gut sehen wenn man die gespeicherte Datei
mit Paint.net öffnet dann sieht man ob der
Hintergrund transarent ist oder nicht.
Da einzelnes Kopieren von einzelnen Pixel
extrem lange dauert weiß ich nicht ob das
überhaupt ein guter Weg ist was ich da mache.
Deshalb frag ich mal hier die Profis. Vielleicht
hat jemand von euch Ahnung davon und weiß
wie man effizient den schwarzen Hintergrund
transparent macht? :)
Transparent abspeichern geht nur mit Images:
1. StartDrawing(screenoutput() ODER SpriteOutput())
2. grabdrawingimage(); wie GrabSprite nur für Images
3. *newimage=CreateImage(#PB_Any, width, height, 32|#pb_image_transparent); ein neues image erstellen da das gegrabte nur 24 Bit hat
4. StartDrawing(ImageOutput(*newimage))
5. Drawingmode(#PB_2DDrawing_AllChannels)
6. Box(0, 0, outputwidth(), outputheight(), $ffffffff); damit das Bild nicht mehr Transparent ist
7. DrawImage(gegrabte image,0,0); dass gegrabte Bild zeichnen
8. Jeden Pixel durchgehen und schauen ob R/G/B 0 ist und dann einfach Plot(x,y,0)
9. Bild abspeichern

hoffe das ist verständlich...
falls es nicht klappt einfach den Codeausschnitt Posten und ich korrigiere es dann.

mfg
kevin

Re: schwarze Farbe von GrabSprite transparent machen?

Verfasst: 06.07.2013 13:52
von ts-soft
siehe: http://www.purebasic.fr/german/viewtopi ... 74#p309674

ist natürlich anzupassen, da hier weiß transpirieren soll :mrgreen: