Seite 1 von 1

DisplayTransparentSprite Fehler

Verfasst: 03.12.2023 14:38
von xperience2003
hi, hab da wiedermal ein paar probleme entdeckt ..die ein kleines projekt wieder von anfang an scheitern lassen ;)

ich lade ein sprite mit meinen waren-icons
und möchte dann die einzelnen tiles ausschneiden

hjier der testcode

Code: Alles auswählen


InitSprite():InitKeyboard():InitMouse()
UsePNGImageDecoder()	

If OpenScreen(800, 600,32,"wirtschaftstest")
    
    
   LoadSprite(1000, "waren/waren64x64.png",#PB_Sprite_AlphaBlending )
   ClearScreen(RGB(0,0,0))
   DisplayTransparentSprite(1000,0,0)
    
    i=0
    For y=0 To 5
      For x=0 To 9
        GrabSprite(i, x*64, y*64, 64, 64 , #PB_Sprite_AlphaBlending )
       ; SaveSprite(i,"ware_"+Str(i)+".png",#PB_ImagePlugin_PNG)      
      i+1  
     Next
    Next
    
    Repeat
      
    ExamineKeyboard()
      
      If KeyboardPushed(#PB_Key_Escape)
      Quit=1  
      EndIf
          
      ClearScreen(RGB(80,70,85))
   
      DisplayTransparentSprite(1000,0,10)
        
      For i=2 To 9
        DisplayTransparentSprite(i,i*65,450)
      Next
             
      FlipBuffers() 
    Until  Quit
  EndIf
  End
  

im bild sieht man was passiert
oben ist das ganze tileset unten stelle ich ein paar ausgeschnittene dar
oben wird das ganze bild korrekt dargestellt unten bei den einzel-tiles wird
der schatten niicht richtig dargestellt, die frage ist WARUM
unter linux und unter windows

Bild

..ach ja..und savesprite geht natürlich auch nicht :(

Re: DisplayTransparentSprite Fehler

Verfasst: 03.12.2023 14:39
von xperience2003
hier nochmal der screenshot...wird oben nicht angezeigt

http://rebirthsoftware.rf.gd/fehler.jpg

Re: DisplayTransparentSprite Fehler

Verfasst: 03.12.2023 15:31
von STARGÅTE
Wenn du mit GrabSprite() ein Ausschnitt vom Bildschirm erstellst, hat dieser natürlich kein Alpha-Kanal mehr.
Deswegen sind sehen die Bilder unten so komisch aus. Bei DisplayTransparentSprite() ist schwarz auch transparent, deswegen haben die Bilder keine komplette schwarze Box um sich.

Du kannst nun entweder ClipSprite() nutzen um die Icons auszuschneiden oder aber du machst das mit den Image Befehlen. Dort hat GrabImage() auch die Option ein zweites Image aus einem Quell-Image zu erzeugen, unter Angabe von Position und Größe.

Re: DisplayTransparentSprite Fehler

Verfasst: 03.12.2023 20:12
von xperience2003
ok, ist einleuchtend
wozu ist dann der syntax #PB_Sprite_AlphaBlending ?

habs nun im malprogramm einzeln abgespeichert und einzeln geladen,
werde das mit dem images ausschneiden und in den texturenbuffer kopieren mal probieren

danke

Re: DisplayTransparentSprite Fehler

Verfasst: 03.12.2023 20:53
von DarkDragon
xperience2003 hat geschrieben: 03.12.2023 20:12 ok, ist einleuchtend
wozu ist dann der syntax #PB_Sprite_AlphaBlending ?

habs nun im malprogramm einzeln abgespeichert und einzeln geladen,
werde das mit dem images ausschneiden und in den texturenbuffer kopieren mal probieren

danke
Der Screen buffer kann tatsächlich auch einen Alpha Channel besitzen, aber wohl nur mit OpenScreen und eigentlich müsste man dann bei der clearing farbe auch den alpha wert angeben können:

https://www.purebasic.com/documentation ... creen.html

Code: Alles auswählen

Depth	It can be one the following values:
  16: 65000 colors, fixed palette
  24: 16 Mo colors, fixed palette
  32: 16 Mo colors, faster than 24-bit mode, allows alpha blending