Aktuelle Zeit: 01.10.2020 08:39

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 8 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Sprite verändern geht nicht
BeitragVerfasst: 19.04.2020 13:25 
Offline

Registriert: 10.04.2020 12:19
Hallo, folgender Testcode lädt ein Sprite (Musik-Vorzeichen) und zeigt es an. Allerdings dann zunächst natürlich so, daß nicht nur das Musik-Vorzeichen angezeigt wird, sondern auch der weiße Hintergrund dazu. Kann man den irgendwie weg bekommen? Ich habe es versucht mit TransparentSpriteColor und mit DisplayTransparentSprite, aber nichts davon wirkte auch nur die Bohne. Das Handbuch präsentiert sich allerdings auch so wortkarg in dem Fall, daß ich daraus gar nicht erst entnehmen kann, wozu TransparentSpriteColor und DisplayTransparentSprite wirklich da sind. Falls es eine Lösung gibt, wie man den weißen Hintergrund in einem Sprite weg bekommt, vielen Dank. Hier der Testcode:

Code:
#Window1 = 1
#Flags = #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_ScreenCentered

If InitSprite() = 0
  MessageRequester("InitSprite fehlgeschlagen", "Programm endet")
EndIf 

If InitMouse() = 0
  MessageRequester("InitMouse fehlgeschlagen", "Programm endet")
EndIf

If InitKeyboard() = 0
  MessageRequester("InitKeyboard fehlgeschlagen", "Programm endet")
EndIf 

If OpenWindow(1,0,0,800,412,"",#Flags) = 0
  MessageRequester("OpenWindow fehlgeschlagen", "Programm endet")
EndIf

If OpenWindowedScreen(WindowID(1),0,0,800,412) = 0
  MessageRequester("OpenWindowedScreen fehlgeschlagen", "Programm endet")
EndIf



UseJPEGImageDecoder()
If LoadSprite(1,"C:/Users/lenovo/Desktop/kr.jpg") = 0
  MessageRequester("InitSprite fehlgeschlagen", "Programm endet")
EndIf 
ZoomSprite(1,50,50)

StartDrawing(ScreenOutput())
Box(0,0,800,412,RGB(0,150,0))
StopDrawing()

Repeat
   
    event = WaitWindowEvent()
    Select event
    Case #PB_Event_CloseWindow
    schliessen = 1
    EndSelect

    DisplaySprite(1,250,150)
    FlipBuffers() 
   
Until schliessen = 1 
End


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Sprite verändern geht nicht
BeitragVerfasst: 19.04.2020 13:43 
Offline
Benutzeravatar

Registriert: 25.09.2016 01:42
Help -> LoadSprite()
https://www.purebasic.com/german/documentation/sprite/loadsprite.html

_________________

Links:
PureBasic Discord
[INCLUDE] GLFW 3.3 Library
[MODULE] Bass Library 2.4 (Win)
[LIBRARY] Hexi Binary2Hex (Win)



Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Sprite verändern geht nicht
BeitragVerfasst: 19.04.2020 13:47 
Offline

Registriert: 10.04.2020 12:19
Hatte ich schon gelesen. Und dann?

Mit allem anderen, was ich in PureBasic brauche, komme ich bisher gut voran, nur Sprites sind das rote Tuch. Bitte um Lösung für das oben genannte Problem, Danke.


Zuletzt geändert von Re57 am 19.04.2020 14:10, insgesamt 1-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Sprite verändern geht nicht
BeitragVerfasst: 19.04.2020 13:51 
Offline
Benutzeravatar

Registriert: 25.09.2016 01:42
Zitat:
Das Sprite wird mit per Pixel Alpha-Kanal Unterstützung erstellt, benötigt
für DisplayTransparentSprite(). Das Bildformat muss dies unterstützen (derzeit
nur PNG und TIFF)

_________________

Links:
PureBasic Discord
[INCLUDE] GLFW 3.3 Library
[MODULE] Bass Library 2.4 (Win)
[LIBRARY] Hexi Binary2Hex (Win)



Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Sprite verändern geht nicht
BeitragVerfasst: 19.04.2020 14:08 
Offline

Registriert: 10.04.2020 12:19
Jetzt mit PNG-Sprite geht es, Danke!!

P.S.: Zu früh gefreut, war mein Fehler. Ich hatte zunächst ein anderes PNG-Sprite verwendet. Das eigentliche PNG-Sprite, was ich verwenden will (schwarzes Musik-Zeichen mit weißem Hintergrund) wird zwar geladen, aber nur als schwarze Fläche angezeigt. Beschädigt ist das Sprite aber wohl nicht, in LibreOfficeDraw wird das einwandfrei angezeigt. Wie kommt das? Danke.

Hier jetzt der veränderte Code:

Code:
#Window1 = 1
#Flags = #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_ScreenCentered

If InitSprite() = 0
  MessageRequester("InitSprite fehlgeschlagen", "Programm endet")
EndIf 

If InitMouse() = 0
  MessageRequester("InitMouse fehlgeschlagen", "Programm endet")
EndIf

If InitKeyboard() = 0
  MessageRequester("InitKeyboard fehlgeschlagen", "Programm endet")
EndIf 

If OpenWindow(1,0,0,800,412,"",#Flags) = 0
  MessageRequester("OpenWindow fehlgeschlagen", "Programm endet")
EndIf

If OpenWindowedScreen(WindowID(1),0,0,800,412) = 0
  MessageRequester("OpenWindowedScreen fehlgeschlagen", "Programm endet")
EndIf



 UsePNGImageDecoder()
If LoadSprite(1,"C:/Users/lenovo/Desktop/kr.png",#PB_Sprite_AlphaBlending) = 0
  MessageRequester("InitSprite fehlgeschlagen", "Programm endet")
EndIf 
ZoomSprite(1,50,50)

StartDrawing(ScreenOutput())
Box(0,0,800,412,RGB(0,150,0))
StopDrawing()

Repeat
   
    event = WaitWindowEvent()
    Select event
    Case #PB_Event_CloseWindow
    schliessen = 1
    EndSelect

    DisplayTransparentSprite(1,250,150,200,RGB(0,0,0))
    FlipBuffers() 
   
Until schliessen = 1 
End


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Sprite verändern geht nicht
BeitragVerfasst: 19.04.2020 15:41 
Offline

Registriert: 10.04.2020 12:19
Mit den Code-Zeilen

Code:
UsePNGImageDecoder()
If LoadSprite(1,"C:/Users/lenovo/Desktop/kr.png",#PB_Sprite_AlphaBlending) = 0
  MessageRequester("InitSprite fehlgeschlagen", "")
EndIf 
ZoomSprite(1,50,50)

StartDrawing(ScreenOutput())
Box(0,0,800,412,RGB(0,150,0))
StopDrawing()

TransparentSpriteColor(1,RGB(255,255,255))

Repeat
   
    event = WaitWindowEvent()
    Select event
    Case #PB_Event_CloseWindow
    schliessen = 1
    EndSelect
   
    DisplayTransparentSprite(1,230,230,200,RGB(0,0,0))
    FlipBuffers()


wird nun tatsächlich das Sprite richtig angezeigt, allerdings ist das Musik-Symbol selbst dann nur noch zu erahnen. Liegt dann wohl an der vorherigen Konvertierung von JPEG auf PNG.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Sprite verändern geht nicht
BeitragVerfasst: 19.04.2020 15:53 
Offline
Benutzeravatar

Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9
Re57 hat geschrieben:
Mit den Code-Zeilen [...] wird nun tatsächlich das Sprite richtig angezeigt, allerdings ist das Musik-Symbol selbst dann nur noch zu erahnen. Liegt dann wohl an der vorherigen Konvertierung von JPEG auf PNG.

woher sollen wir das denn wissen? Lade mal beide Bilder irgendwo hoch (beispielsweise auf https://imgur.com/). Ich wette, dass Dir dann hier jemand helfen kann.

_________________
Schrödingers Smiley :):


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Sprite verändern geht nicht
BeitragVerfasst: 19.04.2020 15:58 
Offline

Registriert: 10.04.2020 12:19
Jetzt habe ich ein völlig originales PNG-Sprite mit demselben Musik-Symbol verwendet und das läuft 1a. Ich wußte ja selber nicht, daß sich Konvertierungen so negativ auswirken können. Danke Kiffi und auch nochmal an alle anderen in diesem Thread.


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 8 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 16 Gäste


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye