Hintergrundbild im Programm

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
duli
Beiträge: 75
Registriert: 17.04.2007 11:39

Hintergrundbild im Programm

Beitrag von duli »

:shock:
Hallo zusammen. Hier bin ich wieder, nun mit dem Versuch ein Bild im Hintergrund zu stellen, so dass die Oberfläche des ein mal eins Programm nicht so langweilig ist. Ich habe in der Hilfe und im Forum nachgesehen und das was ich in der Hilfe sah versuchte ich anzuwenden mit dem Erfolg, dass das Bild nicht angewendet wird

Die Programm Zeilen die ich eingefügt haben sind wie folgt.

Code: Alles auswählen

Enumeration ; hier kommen alle Gadgets rein
  #StringZahl1
  #StringZahl2
  #StringZahl3
  #StringErgebnis
  #RichtigOderFalschText
  #AnzahlRichtigeText
  #AnzahlRichtigeWert
  #AnzahlFalscherText
  #AnzahlFalscherWert
  #AktuelleDauer
  #BildKonstante1
  #BildKonstante2
EndEnumeration
für das Deklarieren der Konstanten wobei ich nicht wusste ob es eine oder zwei Konstanten braucht, aber es hat mit einer oder zwei Konstanten nicht Funktioniert.

Dann die Zeilen wo die Grafik eingefügt wird.

Code: Alles auswählen

If LoadImage(#BildKonstante1, "hinten.gif")    ; ändern Sie den 2. Parameter in den Pfad/Dateiname Ihres Bildes
      ImageGadget(#BildKonstante2,  0, 0, 147, 274, ImageID(0))                     ; Imagegadget Standard
    EndIf  
Es ist mir nicht klar ob diese Datei beim Komilieren mit eingebunden wird oder ob die Datei immer mitgeführt werden muss, wobei mir das einbinden wichtig wäre.

Das Bild ist eine schwarzweise Zeichnung die transparenz ist. und hat die Masse 147*274.

Das Ziel ist das diese Zeichnung als Hintergrund dient damit nicht nur so ein Langweiliges Grau im Hintergrund ist.

Danke für euer Mitdenken.



Und hier noch der gesamte Code

Code: Alles auswählen

; Mit Eneumeritation wird den Konstanten eine Fortlaufende Nummer vergeben anstelle dies von Hand zu machen.

Enumeration ; hier kommen alle Windows rein
  #MainWindow
EndEnumeration
 
Enumeration ; hier kommen alle Menüitems rein
  #neu
EndEnumeration

Enumeration ; hier kommen alle Gadgets rein
  #StringZahl1
  #StringZahl2
  #StringZahl3
  #StringErgebnis
  #RichtigOderFalschText
  #AnzahlRichtigeText
  #AnzahlRichtigeWert
  #AnzahlFalscherText
  #AnzahlFalscherWert
  #AktuelleDauer
  #BildKonstante1
  #BildKonstante2
EndEnumeration




Anzahl_Rechnungen =0
Anzahl_Richtig = 0
Anzahl_Falsche = 0
t_start = ElapsedMilliseconds()

Procedure Zeit_Updaten(Dummy)
   Shared t_start
   Repeat
      laufzeit_jetzt = ElapsedMilliseconds() - t_start
      SetGadgetText(#AktuelleDauer, "Laufzeit: " + Str(laufzeit_jetzt/1000) + " s")
      Delay(1000)
   ForEver
EndProcedure


Procedure FillGadget()
  SetGadgetText(#StringZahl1,Str(Random(8)+2))
  SetGadgetText(#StringZahl2,Str(Random(8)+2))
  SetGadgetText(#StringZahl3,"")
EndProcedure


Procedure rechne()
 
  val1.s = GetGadgetText(#StringZahl1)
  val2.s = GetGadgetText(#StringZahl2)
  result = Val(val1)*Val(val2)
  SetGadgetText(#StringErgebnis,Str(result))
  
  If result = Val(GetGadgetText(#StringZahl3))
    ProcedureReturn #True
  EndIf
 
EndProcedure

Procedure Auswertung()
  Shared Anzahl_Richtig
  Shared Anzahl_Falsche
  Sekunden.s = GetGadgetText(#AktuelleDauer)
  MessageRequester("Information", "Du Wicht hast nur " + Str(Anzahl_Richtig) + " Richtige von 10 Herausvorderungen gemacht und dafür "+ Sekunden + " gebraucht" , #PB_MessageRequester_Ok)
  End
 EndProcedure

If OpenWindow(#MainWindow,0,0,200,280,"Taschenrechner",#PB_Window_ScreenCentered | #PB_Window_SystemMenu | #PB_Window_MinimizeGadget)
 
  If CreateGadgetList(WindowID(#MainWindow))
      
    If LoadImage(#BildKonstante1, "hinten.gif")    ; ändern Sie den 2. Parameter in den Pfad/Dateiname Ihres Bildes
      ImageGadget(#BildKonstante2,  0, 0, 147, 274, ImageID(0))                     ; Imagegadget Standard
    EndIf  
      
      
    TextGadget(#StringZahl1,20,30,20,20,Str(Random(8)+2))    
   
    TextGadget(#PB_Any, 41, 30, 20, 20, "*")
   
    TextGadget(#StringZahl2,60,30,100,20,Str(Random(8)+2))   
    
    TextGadget(#PB_Any, 0, 70, 150, 20, "Sag was Sache ist Du Pfeife")
   
    StringGadget(#StringZahl3,0,90,100,20,"",#PB_String_Numeric)   
    
    TextGadget(#PB_Any, 0, 120, 200, 20, "Rechne und hau die Finger aufs Enter")
    
    TextGadget(#RichtigOderFalschText, 0, 140, 150, 40, "")
    
    TextGadget(#StringErgebnis,160,140,100,20,"")
    
    TextGadget(#AnzahlRichtigeText, 0, 180, 100, 20, "Richtige")
            
    TextGadget(#AnzahlRichtigeWert, 100, 180, 30, 20, "")
    
    TextGadget(#AnzahlFalscherText, 0, 200, 100, 20, "Falsche")
            
    TextGadget(#AnzahlFalscherWert, 100, 200, 30, 20, "")
    
    TextGadget(#AktuelleDauer, 0, 230, 150, 20, "Laufzeit: " + Str(laufzeit_jetzt/1000) + "s")
    
    AddKeyboardShortcut(#MainWindow,#PB_Shortcut_Return,#neu)
    
    SetActiveGadget(#StringZahl3)
    
    CreateThread(@Zeit_Updaten(),0)
    
  EndIf
EndIf


Repeat
  EventID = WaitWindowEvent()

  Select EventID

    Case #PB_Event_Menu
      If EventMenu() = #neu  
           
         
         EndIf
         
          If rechne()
            Anzahl_Richtig = Anzahl_Richtig +1             
            SetGadgetText(#RichtigOderFalschText, "Richtig das Resultat war")
            SetGadgetText(#AnzahlRichtigeWert, Str(Anzahl_Richtig))
            
          Else
          
            Anzahl_Falsch = Anzahl_Falsch +1
            SetGadgetText(#RichtigOderFalschText, "Aber aber so was auch, das richtige Resultat lautet")
            SetGadgetText(#AnzahlFalscherWert,Str(Anzahl_Falsch))
          EndIf
          
        FillGadget() 
        SetActiveGadget(#StringZahl3) 
        
        Anzahl_Rechnungen=Anzahl_Rechnungen+1
         If Anzahl_Rechnungen = 10
         Auswertung()
         
      EndIf

    Case #PB_Event_CloseWindow
      End
     
    Case #PB_Event_Gadget

  EndSelect
 Until EventID = #PB_Event_CloseWindow
End 
Man kann nicht wissen was man nicht weiss..
Benutzeravatar
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Beitrag von Fluid Byte »

.GIF wird nicht unterstützt.
Windows 10 Pro, 64-Bit / Outtakes | Derek
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

Beitrag von ts-soft »

Code: Alles auswählen

If LoadImage(#BildKonstante1, "hinten.gif") 
Hier lädtst Du ein Bild #BildKonstante1 nutzt die konstante aber fürs
ImageGadget, nicht fürs Image. Entweder eine 0 einfügen, die verwendest
Du in der nächsten Zeile, oder eine zusätzliche Konstante definieren!
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
Benutzeravatar
duli
Beiträge: 75
Registriert: 17.04.2007 11:39

Beitrag von duli »

Danke für die Hinweise, aber mit jpg geht es auch nicht.

Leider habe ich diesen Beitrag nicht verstanden, welche Zeile muss ich was machen?
ts-soft hat geschrieben:

Code: Alles auswählen

If LoadImage(#BildKonstante1, "hinten.gif") 
Hier lädtst Du ein Bild #BildKonstante1 nutzt die konstante aber fürs
ImageGadget, nicht fürs Image. Entweder eine 0 einfügen, die verwendest
Du in der nächsten Zeile, oder eine zusätzliche Konstante definieren!

Code: Alles auswählen

    If LoadImage(#BildKonstante1, "hinter.jpg")    ; ändern Sie den 2. Parameter in den Pfad/Dateiname Ihres Bildes
      ImageGadget(#BildKonstante2,  0, 0, 147, 274, ImageID(0))                     ; Imagegadget Standard
in welcher Zeile muss ein 0 hin anstelle einer Konstante? Ich habe es probiert egal wie ich es gemacht habe es ging nicht.
Man kann nicht wissen was man nicht weiss..
Benutzeravatar
duli
Beiträge: 75
Registriert: 17.04.2007 11:39

Beitrag von duli »

:freak: Ups habe gesehen das jpg auch nicht standartmässig geht und habe es natürlich noch mit bmp versucht. nun kommt die Debuger meldung "#Imange object not initialized." was das meint weiss ich nicht. diese wird in der zweiten Zeile angezeigt.
Man kann nicht wissen was man nicht weiss..
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

Beitrag von ts-soft »

If LoadImage(#BildKonstante1, "hinten.gif")

ImageGadget(#BildKonstante2, 0, 0, 147, 274, ImageID(0))

Und gif geht auch nicht, nimm bmp

Falls Du es immer noch nicht verstehst, sieh in die Hilfe, ein Lichtlein wird erleuchten :wink: , denke ich mal
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
Benutzeravatar
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Beitrag von Fluid Byte »

Ist zwar immer noch ein Disaster aber es funktioniert:

Code: Alles auswählen

Enumeration
	#StringZahl1
	#StringZahl2
	#StringZahl3
	#StringErgebnis
	#RichtigOderFalschText
	#AnzahlRichtigeText
	#AnzahlRichtigeWert
	#AnzahlFalscherText
	#AnzahlFalscherWert
	#AktuelleDauer
	#BildKonstante1
	#BildKonstante2
EndEnumeration

Anzahl_Rechnungen =0
Anzahl_Richtig = 0
Anzahl_Falsche = 0
t_start = ElapsedMilliseconds()

Procedure Zeit_Updaten(Dummy)
	Shared t_start
	
	Repeat
	  laufzeit_jetzt = ElapsedMilliseconds() - t_start
	  SetGadgetText(#AktuelleDauer, "Laufzeit: " + Str(laufzeit_jetzt/1000) + " s")
	  Delay(1000)
	ForEver
EndProcedure

Procedure FillGadget()
	SetGadgetText(#StringZahl1,Str(Random(8)+2))
	SetGadgetText(#StringZahl2,Str(Random(8)+2))
	SetGadgetText(#StringZahl3,"")
EndProcedure

Procedure rechne() 
	val1.s = GetGadgetText(#StringZahl1)
	val2.s = GetGadgetText(#StringZahl2)
	result = Val(val1)*Val(val2)
	
	SetGadgetText(#StringErgebnis,Str(result))
	
	If result = Val(GetGadgetText(#StringZahl3))
		ProcedureReturn #True
	EndIf
EndProcedure

Procedure Auswertung()
	Shared Anzahl_Richtig, Anzahl_Falsche
	
	Sekunden.s = GetGadgetText(#AktuelleDauer)
	
	MessageRequester("Information", "Du Wicht hast nur " + Str(Anzahl_Richtig) + " Richtige von 10 Herausvorderungen gemacht und dafür "+ Sekunden + " gebraucht" , #PB_MessageRequester_Ok)
	End
EndProcedure

CreateImage(0,200,274)

StartDrawing(ImageOutput(0))
For i=0 To 199
	cv = i*255/199
	Box(i,0,1,274,RGB(255,cv,00))
Next
StopDrawing()

OpenWindow(0,0,0,200,280,"Taschenrechner",#PB_Window_ScreenCentered | #PB_Window_SystemMenu | #PB_Window_MinimizeGadget)

CreateGadgetList(WindowID(0))
     
ImageGadget(#BildKonstante2,  0, 0, 147, 274, ImageID(0))
TextGadget(#StringZahl1,20,30,20,20,Str(Random(8)+2))     
TextGadget(#PB_Any, 41, 30, 20, 20, "*")   
TextGadget(#StringZahl2,60,30,100,20,Str(Random(8)+2))      
TextGadget(#PB_Any, 0, 70, 150, 20, "Sag was Sache ist Du Pfeife")   
StringGadget(#StringZahl3,0,90,100,20,"",#PB_String_Numeric)      
TextGadget(#PB_Any, 0, 120, 200, 20, "Rechne und hau die Finger aufs Enter")   
TextGadget(#RichtigOderFalschText, 0, 140, 150, 40, "")   
TextGadget(#StringErgebnis,160,140,100,20,"")   
TextGadget(#AnzahlRichtigeText, 0, 180, 100, 20, "Richtige")          
TextGadget(#AnzahlRichtigeWert, 100, 180, 30, 20, "")   
TextGadget(#AnzahlFalscherText, 0, 200, 100, 20, "Falsche")          
TextGadget(#AnzahlFalscherWert, 100, 200, 30, 20, "")   
TextGadget(#AktuelleDauer, 0, 230, 150, 20, "Laufzeit: " + Str(laufzeit_jetzt/1000) + "s")

AddKeyboardShortcut(0,#PB_Shortcut_Return,0)

SetActiveGadget(#StringZahl3)

CreateThread(@Zeit_Updaten(),0)

Repeat
	EventID = WaitWindowEvent()
	
	Select EventID
		Case #PB_Event_Menu
		If rechne()
			Anzahl_Richtig = Anzahl_Richtig +1             
			SetGadgetText(#RichtigOderFalschText, "Richtig das Resultat war")
			SetGadgetText(#AnzahlRichtigeWert, Str(Anzahl_Richtig))			
		Else		
			Anzahl_Falsch = Anzahl_Falsch +1
			SetGadgetText(#RichtigOderFalschText, "Aber aber so was auch, das richtige Resultat lautet")
			SetGadgetText(#AnzahlFalscherWert,Str(Anzahl_Falsch))
		EndIf
		
		FillGadget()
		SetActiveGadget(#StringZahl3)
		
		Anzahl_Rechnungen + 1
		
		If Anzahl_Rechnungen = 10
		Auswertung()
		
		EndIf
		
		Case #PB_Event_CloseWindow
		End
	EndSelect
Until EventID = #PB_Event_CloseWindow
Windows 10 Pro, 64-Bit / Outtakes | Derek
Benutzeravatar
duli
Beiträge: 75
Registriert: 17.04.2007 11:39

Beitrag von duli »

Danke, ich habe die Hilfe gelesen und leider ist da kein Licht angegangen ausser das ich verstanden habe da mit den Pluginbefehlen möglich ist noch andere Formate zu verwenden. Ich verstehe einfach nicht wieso es nicht geht? Die zwei Zeilen von dir hier sehen für mich genau so aus wie die von mir ausser das sie die bmp datei wählen. Oder habe ich da was verpasst?

ts-soft hat geschrieben:If LoadImage(#BildKonstante1, "hinten.gif")

ImageGadget(#BildKonstante2, 0, 0, 147, 274, ImageID(0))

Und gif geht auch nicht, nimm bmp

Falls Du es immer noch nicht verstehst, sieh in die Hilfe, ein Lichtlein wird erleuchten :wink: , denke ich mal
Man kann nicht wissen was man nicht weiss..
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

Beitrag von ts-soft »

Du lädts das Bild als #BildKonstante1
Benutzt es aber mit 0 ImageID(0)
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
Benutzeravatar
duli
Beiträge: 75
Registriert: 17.04.2007 11:39

Beitrag von duli »

Sorry Fluid Byte als ich meinen Thread schrieb, war du gerade auch dabei. Habe deinen beitrag noch nicht gesehen muss ich noch versuchen zu verstehen aber danke vielmals fürs erste.
Man kann nicht wissen was man nicht weiss..
Antworten