Erste Schritte, brauche etw. Hilfe bei Bildschirmausgaben

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Travis
Beiträge: 35
Registriert: 09.03.2010 19:21

Erste Schritte, brauche etw. Hilfe bei Bildschirmausgaben

Beitrag von Travis »

Hallo zusammen.

Nachdem ich nun schon einige Zeit mit BlitzBasic programmiere und schon einige Projekte fertiggestellt habe möchte ich nun einmal in Pure Basic reinschnuppern. An dieser Sprache gefällt die zusätzliche Möglichkeit das GUI des Betriebssystems zu benutzen. Außerdem sollen die compillierten Programme ja auch kleiner sein (als z.B. bei BlitzBasic > 1MB für jedes Programm) und auf verschiedenen Plattformen laufen.

Als erstes wollte ich mit PureBasic innerhalb eines Vollbildmodus eine Bilddatei aus einer externen Datei anzeigen und gleichzeitig eine Textausgabe hinzufügen. Eigendlich ganz einfach, aber ich schaffe es nicht. Das ist jetzt mein vierter Versuch und es wird nur ein leerer Bildschirm angezeigt.

Code: Alles auswählen

InitSprite()
ExamineDesktops()

deskw = DesktopWidth(0)
deskh = DesktopHeight(0)
OpenScreen(deskw,deskh,32,"Title")

ScreenID = ScreenOutput()

Pic = LoadImage(#PB_Any,"logo.bmp")

StartDrawing(ScreenID)
 DrawImage(Pic,100,100)
StopDrawing()

FlipBuffers()

Delay(5000)
Die Bilddatei ist vorhanden und befindet sich im gleichen Verzeichnis wie der gespeicherte Quellcode. Fehlt da noch was?

Und wie könnte ich jetzt z.B. Debuganzeigen einfügen um mir bestimmte Variablen anzeigen zu lassen. Wenn ich z.B. den Wert der Variable Pic anzeigen möchte würde ich das so machen.

Code: Alles auswählen

Print("Wert von PIC: " + pic)
führt aber zu einer Fehlermeldung das man Strings nicht mit nummerischen Variablen kombinieren könne. Kann ich die Print-Funktion wirklich nur für Text-Strings nutzen??
Man kann alles sagen, man muss es nur vernünftig begründen können.
Ich hasse WASD-Steuerung | Ohne Pix saug ich nix | www.travis.bplaced.net
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Re: Erste Schritte, brauche etw. Hilfe bei Bildschirmausgaben

Beitrag von Kaeru Gaman »

das LoadImage brauchst du nur 1x, den Outputchannel immer wieder.

bau am besten ne richtige schleife ein, nicht nurn 5sec delay.

Code: Alles auswählen

InitSprite()
InitKeyboard()
ExamineDesktops()
deskw = DesktopWidth(0)
deskh = DesktopHeight(0)
OpenScreen(deskw,deskh,32,"Title")
Pic = LoadImage(#PB_Any,"logo.bmp")
Repeat
  ExamineKeyboard()
  ClearScreen($000000)
  StartDrawing(ScreenOutput())
  DrawImage(Pic,100,100)
  StopDrawing()
  FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape)
wenn du sowieso nen screen benutzt, benutze besser Sprites statt Images.

Code: Alles auswählen

InitSprite()
InitKeyboard()
ExamineDesktops()
deskw = DesktopWidth(0)
deskh = DesktopHeight(0)
OpenScreen(deskw,deskh,32,"Title")
Pic = LoadSprite(#PB_Any,"logo.bmp")
Repeat
  ExamineKeyboard()
  ClearScreen($000000)
  DisplaySprite(Pic,100,100)
  FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape)

zu deiner zweiten Frage:
selbstverständlich, ein String ist nunmal eine Kette Alphanumerische zeichen, keine numerische Codierung von vier oder acht byte.
dafür gibt es umwandlungsfunktionen wie Str(), schau einfach mal ins String-Kapitel der Help.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
c4s
Beiträge: 1235
Registriert: 19.09.2007 22:18

Re: Erste Schritte, brauche etw. Hilfe bei Bildschirmausgaben

Beitrag von c4s »

Travis hat geschrieben:Und wie könnte ich jetzt z.B. Debuganzeigen einfügen um mir bestimmte Variablen anzeigen zu lassen
Da du speziell debuggen erwähnst...benutze einfach den Befehl "Debug Pic" um den Wert der Variable Pic auszugeben.
"Menschenskinder, das Niveau dieses Forums singt schon wieder!" — GronkhLP ||| "ich hogffe ihr könnt den fehle endecken" — Marvin133 ||| "Ideoten gibts ..." — computerfreak ||| "Jup, danke. Gruss" — funkheld
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Re: Erste Schritte, brauche etw. Hilfe bei Bildschirmausgaben

Beitrag von Kaeru Gaman »

übrigens...
auf ein DrawingOutput wird nicht per Print geschrieben, sondern per DrawText.
Print ist nur für die Console.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Travis
Beiträge: 35
Registriert: 09.03.2010 19:21

Re: Erste Schritte, brauche etw. Hilfe bei Bildschirmausgaben

Beitrag von Travis »

Danke für die Antworten. Mit DisplaySprite habe ich mein Bild jetzt tatsächlich auf dem Schirm. Wenn ich nun aber mit DrawText etwas schreiben möchte führt das zu einem Programmabbruch ohne Fehlermeldung. Mit DrawImage geht's leider immer noch nicht.

-------
InitSprite()
InitKeyboard()
ExamineDesktops()
deskw = DesktopWidth(0)
deskh = DesktopHeight(0)
OpenScreen(deskw,deskh,32,"Title")
ScreenID = ScreenOutput()
Pic = LoadSprite(#PB_Any,"logo.bmp")
Repeat
ExamineKeyboard()
ClearScreen($000000)
DisplaySprite(Pic,100,100)
FlipBuffers()
StartDrawing(ScreenID)
DrawText(10,10, "Das ist ein Test.")
StopDrawing()

Until KeyboardPushed(#PB_Key_Escape)
-------

Werde mich aber am Wochenende mal intensiver damit beschäftigen.
Man kann alles sagen, man muss es nur vernünftig begründen können.
Ich hasse WASD-Steuerung | Ohne Pix saug ich nix | www.travis.bplaced.net
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Re: Erste Schritte, brauche etw. Hilfe bei Bildschirmausgaben

Beitrag von Kaeru Gaman »

wie ich dir bereits sagte, dein ScreenOutput() brauchst du immer neu.
beim Fullscreen mit DoubleBuffer hat das mindestens zwei verschiedene Standardwerte, für jeden Buffer einen.
also pack den nicht vorher in nen Dummy sondern ermittele ihn direkt, wie in meinem Beispiel gezeigt.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Antworten