GELÖSCHT
-
- 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?
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
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
- 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?
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
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
(\/) (°,,,°) (\/)
Re: schwarze Farbe von GrabSprite transparent machen?
Transparent abspeichern geht nur mit Images:mirca hat geschrieben:Oh stimmt. Mein Fehler. Du hast recht.
Ich habe das irgendwie vergessen dazu
zu schreiben.![]()
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?
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
- 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?
siehe: http://www.purebasic.fr/german/viewtopi ... 74#p309674
ist natürlich anzupassen, da hier weiß transpirieren soll
ist natürlich anzupassen, da hier weiß transpirieren soll

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.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
