Seite 1 von 1

Erste Schritte, brauche etw. Hilfe bei Bildschirmausgaben

Verfasst: 09.03.2010 19:49
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??

Re: Erste Schritte, brauche etw. Hilfe bei Bildschirmausgaben

Verfasst: 09.03.2010 20:03
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.

Re: Erste Schritte, brauche etw. Hilfe bei Bildschirmausgaben

Verfasst: 09.03.2010 21:08
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.

Re: Erste Schritte, brauche etw. Hilfe bei Bildschirmausgaben

Verfasst: 09.03.2010 22:51
von Kaeru Gaman
übrigens...
auf ein DrawingOutput wird nicht per Print geschrieben, sondern per DrawText.
Print ist nur für die Console.

Re: Erste Schritte, brauche etw. Hilfe bei Bildschirmausgaben

Verfasst: 10.03.2010 18:48
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.

Re: Erste Schritte, brauche etw. Hilfe bei Bildschirmausgaben

Verfasst: 10.03.2010 20:26
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.