GELÖSCHT

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
mirca
Beiträge: 169
Registriert: 13.11.2011 16:05

GELÖSCHT

Beitrag von mirca »

GELÖSCHT
Zuletzt geändert von mirca am 17.10.2013 11:59, insgesamt 1-mal geändert.
Drago
Beiträge: 148
Registriert: 02.02.2010 18:22
Computerausstattung: Win XP SP3, AMD Sempron (MMX) 1.2 GHz, 512 MB, Nvidia GeForce FX 5200, 128 MB, DirectX 9.0c
Wohnort: Westerwald

Re: schwarze Farbe von GrabSprite transparent machen?

Beitrag 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
mirca
Beiträge: 169
Registriert: 13.11.2011 16:05

GELÖSCHT

Beitrag von mirca »

GELÖSCHT
Zuletzt geändert von mirca am 17.10.2013 11:59, insgesamt 1-mal geändert.
mirca
Beiträge: 169
Registriert: 13.11.2011 16:05

GELÖSCHT

Beitrag von mirca »

GELÖSCHT
Zuletzt geändert von mirca am 17.10.2013 11:59, insgesamt 1-mal geändert.
Benutzeravatar
KeyKon
Beiträge: 1412
Registriert: 10.09.2004 20:51
Computerausstattung: Laptop: i5 2,8 Ghz, 16GB DDR3 RAM, GeForce 555GT 2GB VRAM
PC: i7 4,3 Ghz, 32GB DDR3 RAM, GeForce 680 GTX 4GB VRAM
Win10 x64 Home/Prof
PB 5.30 (64bit)
Wohnort: Ansbach
Kontaktdaten:

Re: schwarze Farbe von GrabSprite transparent machen?

Beitrag 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
(\/) (°,,,°) (\/)
mirca
Beiträge: 169
Registriert: 13.11.2011 16:05

GELÖSCHT

Beitrag von mirca »

GELÖSCHT
Zuletzt geändert von mirca am 17.10.2013 11:59, insgesamt 1-mal geändert.
Kevin
Beiträge: 236
Registriert: 11.06.2007 12:55

Re: schwarze Farbe von GrabSprite transparent machen?

Beitrag 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
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: schwarze Farbe von GrabSprite transparent machen?

Beitrag von ts-soft »

siehe: http://www.purebasic.fr/german/viewtopi ... 74#p309674

ist natürlich anzupassen, da hier weiß transpirieren soll :mrgreen:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Antworten