DrawImage will nichts auf den Screen pinseln...

Übersicht BlitzBasic Beginners-Corner

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen

 

timo_81

Betreff: DrawImage will nichts auf den Screen pinseln...

BeitragMo, Sep 19, 2005 16:36
Antworten mit Zitat
Benutzer-Profile anzeigen
BlitzBasic: [AUSKLAPPEN]

...
RenderWorld
....

If leiste=1 Then ;Menü
playericon=LoadImage(\"player.jpg\")
DrawImage playericon,400,600


Color (0),(0),(0)
Rect 380,630,40,40,0
Rect 430,630,40,40,0
Rect 480,630,40,40,0
Rect 530,630,40,40,0
Rect 580,630,40,40,0

SetFont fntArialB
Text 380,600,\"Zwerg\" + \" Level 1 \" ,False,False
Rect 840,610,40,40,0
Line 860,650,860,660
.......
Else
FreeImage playericon
End If

Flip

Wend
ClearWorld

End



Alles geht die Menüleiste wird eingeblendet nur das Bild nicht.
Es kommt auch keine Fehlermeldung.

Irgendwelche Ideen

Timo[/syntax]
 

David

BeitragMo, Sep 19, 2005 17:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi!

Vllt nicht ständig das Bild neuladen und freigeben?

grüße
 

timo_81

BeitragMo, Sep 19, 2005 17:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich geb es doch nur wieder frei wenn die leiste=0 ist
und das Menü ausgeblendet wird...da steht doch unten noch ein

else
freeimage...

gruß
Timo

Mr.Hyde

Newsposter

BeitragMo, Sep 19, 2005 21:53
Antworten mit Zitat
Benutzer-Profile anzeigen
kannse die ganze Schleife mal posten??? mir würde es dann leichter fallen. Vielleicht sieht sonst noch jemand was aber cih finde grade nichts

Firstdeathmaker

BeitragMo, Sep 19, 2005 21:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
DrawImage playericon,400,600


Color (0),(0),(0)
Rect 380,630,40,40,0
Rect 430,630,40,40,0
Rect 480,630,40,40,0
Rect 530,630,40,40,0
Rect 580,630,40,40,0


Hmm, malst du vielleicht mit den Rechtecken über das Icon drüber? Male das Icon man nachdem du die Rechtecke eingezeichnet hast.

Edit: Mist, Hyde hat recht. Man, hab ich schon lange kein Rect mehr benutzt...
www.illusion-games.de
Space War 3 | Space Race | Galaxy on Fire | Razoon
Gewinner des BCC #57 User posted image
  • Zuletzt bearbeitet von Firstdeathmaker am Mo, Sep 19, 2005 22:10, insgesamt einmal bearbeitet

Mr.Hyde

Newsposter

BeitragMo, Sep 19, 2005 22:02
Antworten mit Zitat
Benutzer-Profile anzeigen
@ fdm wenn man als letzten parameter eine 0 eingibt bei rect... ist es nur eine linie keingefülltes Kästchen also ausgeschlossen ;=)
 

timo_81

BeitragMo, Sep 19, 2005 23:17
Antworten mit Zitat
Benutzer-Profile anzeigen
ok hier gibts was auf die Augen hehe:

BlitzBasic: [AUSKLAPPEN]

...Hier käme die While Hauptschleife also schreiben wir sie mal hin:

While Not KeyHit(1)

If KeyDown(17)=1 Then WireFrame 1 ;Taste w
If KeyDown(31)=1 Then WireFrame 0 ; Taste s
If KeyDown( 60 )=True Then zoom#=zoom#-0.1;zoom
If KeyDown( 59 )=True Then zoom#=zoom#+0.1;zoom
If KeyDown(61)= True Then leiste=1;Leiste an
If KeyDown(62)=True Then leiste=0;Leiste aus

If zoom#<1 Then
zoom#=1
End If
If zoom#>100 Then
zoom#=100
End If
CameraZoom cam,zoom#


UpdateWorld
RenderWorld

Text 400,100,\"Spielerposition:\" + \"X: \" +EntityX(Spieler) +\" Y: \"+EntityY(Spieler) +\" Z: \"+EntityZ(Spieler)
Text 400,200,\"Kameraposition:\"+ \"X: \" +EntityX(cam) +\" Y: \"+EntityY(cam) +\" Z: \"+EntityZ(cam)
Text 100,100,\"Gerenderte Dreiecke: \" + TrisRendered()

If EntityInView(castle,cam)=1 Then
ShowEntity castle
Text 100,150,\"akt.Mesh: Burg : wird gerendert\"
Else
HideEntity castle
End If

For i=1 To 20
If EntityInView(baum(i),cam)=1 Then
ShowEntity baum(i)
Text 100,350,\"akt.Mesh: sichtbare Bäume werden gerendert\"
Else
HideEntity baum(i)
End If
Next

For t=1 To 8
If EntityInView(zombie_gegner(t),cam)=1 Then
ShowEntity zombie_gegner(t)
Text 100,450,\"akt.Mesh: sichtbare Zombies werden gerendert \"
Else
HideEntity zombie_gegner(t)
End If
Next

If treffer=True Then
Text 200,600,\"Treffer!!\"
Else
Text 200,600,\"Kein Treffer!!\"
End If

If leiste=1 Then ;Menü
playericon=LoadImage(\"player.jpg\")
DrawImage playericon,400,600





Color (139),(90),(43)
Rect 0,600,1024,168,1

Color (0),(0),(0)
Rect 380,630,40,40,0
Rect 430,630,40,40,0
Rect 480,630,40,40,0
Rect 530,630,40,40,0
Rect 580,630,40,40,0

SetFont fntArialB
Text 380,600,\"Zwerg\" + \" Level 1 \" ,False,False
Rect 840,610,40,40,0
Line 860,650,860,660
Line 820,680,840,680
Line 880,680,900,680
Rect 780,660,40,40,0
Rect 900,660,40,40,0
Rect 840,660,40,40,0
Line 860,700,820,720
Line 860,700,900,720
Rect 800,720,40,40,0
Rect 880,720,40,40,0

SetFont fntArialB_2
Text 390,680,\"F6\",False,False
Text 440,680,\"F7\",False,False
Text 490,680,\"F8\",False,False
Text 540,680,\"F9\",False,False
Text 590,680,\"F10\",False,False
Text 10,620,\"Energie: 100\",False,False
Text 10,640,\"Mana: 0\", False,False
Text 10,660,\"Kraft: 1\",False,False
Text 10,680,\"Geschwindigkeit: 5\" , False , False
Text 10,700,\"Geschick: 10 \",False,False
Text 10,720,\"Verteidigung: 1-2\"
Text 10,740,\"Schaden: 1-2 \"
Text 200,740,\"Inventar: ->\",False,False
Rect 300,720,40,40,0
Rect 350,720,40,40,0
Rect 400,720,40,40,0
Rect 450,720,40,40,0
Rect 500,720,40,40,0
Rect 550,720,40,40,0
Rect 600,720,40,40,0
Rect 650,720,40,40,0
Rect 700,720,40,40,0
Else
FreeImage playericon
End If

Color (0),(255),(0)
Rect MouseX(),MouseY(),20,20
;Text 100,100 ,\"angeklickt: \"+EntityName$(name)
frames=frames+1
If MilliSecs()-render_time=>1000 Then fps=frames : frames=0 : render_time=MilliSecs()
Text 0,0,fps


Flip

Wend
ClearWorld

End

Habs jetz allerdings n bisschen aus dem Zusammenhang gerissen
da kommt normalerweise noch mehr aber das sollte zur
Illustration reichen

Irgendwelche Vorschläge??

 

Gerhard

BeitragDi, Sep 20, 2005 16:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Rect 0,600,1024,168,1
dürfte über dem Bild liegen.

Außerdem lädst du das Bild in der Schleife ständig...

Mr.Hyde

Newsposter

BeitragDi, Sep 20, 2005 17:23
Antworten mit Zitat
Benutzer-Profile anzeigen
ja das müsste es sein. Du musst zuerst den Rect-Befehl benutzen und dann das Image zeichnen. Ich würde dir aber empfehlen generell images zu verwenden, da diese schneller sind (Und schöner)
ach ja und das schon angesprochene Problem mit dem lLaden von Bildern. Lad sie vorher und wenn man sie direkt nicht mehr braucht kann man sie löschen (also z.B) Pausenmenu etc. aber bei einem Spielmenü, das man immer wieder aufruft (so versteh ich das, da es immer wenn leiste=1 eingezeichnet wird) ist nicht sinnvoll jedesmal dazu die Gfx zu laden
Hoffe es läuft jetzt.
 

timo_81

BeitragDi, Sep 20, 2005 18:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Ihr habt Recht ich werde es ändern ...
ich weiss jedoch nicht ob es heute noch klappt...
cih werd mich wieder melden.

Schönen Dienstag noch
Timo
 

timo_81

BeitragDi, Sep 20, 2005 21:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Nun lade ich das ganze Menü als Bild.
Ich wollte eine Minimap reinmachen.
Nun gibt es folgendes Problem:

Er zeigt entweder die Minimap an oder die Leiste...gibt es
da irgendeine Renderreihenfolge?

Wie kann ich die Minimap in die eingepasste Menustruktur integrieren?

greetz
timo

Firstdeathmaker

BeitragDi, Sep 20, 2005 21:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Das sind Sachen die man sich eigentlich überlegen muss, bevor man mit dem proggen einer Menüstruktur anfängt. Ich weis ja nicht wirklich wie du dir deine überlegt hast. Manchmal hilft auch ein sogenanntes Struktogramm, also ein Blatt auf dem du dir alles mal in der Reihenfolge aufschreibst wie du dir denkst dass es machbar wäre. Dadurch verhinderst du, dass du erst später merkst dass etwas so nicht geht und du nochmal neu anfangen musst.

"Renderreihenfolge" ist eigentlich einfach:

Mit "Renderworld" wird der Backbuffer mit dem aktuellen 3D Bild überschrieben. Alle danachfolgenden Grafikbefehle überschreiben diese Bild dann jedoch.

Zum Thema Menüstruktur: Ich würde mir zunächst eine Art Mini-Gui schreiben, indem die Schalter deines Menü´s mit Types dargestellt und verwaltet werden. Dadurch bekommst du schonmal eine menge Übersicht rein. Dann würde ich mir überlegen, welche GUI-Elemente im Spiel fest sind und welche seperat davon sein müssen. Die festen schonmal immer einzeichnen. Nach dem festen Hintergrund würde ich dann so etwas wie eine Minimap (Ein nicht-fester GUI-Gegenstand) einzeichnen.

Generell gilt: Was du zuletzt eingezeichnet hast, wird auch als oberstes angezeigt.
www.illusion-games.de
Space War 3 | Space Race | Galaxy on Fire | Razoon
Gewinner des BCC #57 User posted image

Mr.Hyde

Newsposter

BeitragDi, Sep 20, 2005 21:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Also deine genau Frage versteh ich nicht. grundsätzlich arbeitet der den Code ab. Also was zuerst im Code steht zeichnet er auch zuerst. diese Reihenfolge hat ja auch deine Menüleiste über das Playerimage gezeichnet. Versuch deinen Code daraufhin zu untersuchen, was du wann zeichnest und was du wann zeichnen willst.

[EDIT] Sorry, fdm war nen paar sec. schneller
 

timo_81

BeitragDi, Sep 20, 2005 22:33
Antworten mit Zitat
Benutzer-Profile anzeigen
hi ,
ich nochmal:

Also, in meiner Leiste in ein Rechteck "frei" und da wollte ich meine minimap reinsetzen so dass , die mit in der Leiste erscheint.

Gibt es da auch ne Möglichkeit ohne Types?

So nach dem Motto: das eine ist der Hintergrund und auf den wird jetz die minimap an der stelle x,y eingesetzt??

ich könnte euch mal ne screenshot zeigen, wenn ich wüsste , wie man den
hochlädt.

gretz
timo

Firstdeathmaker

BeitragDi, Sep 20, 2005 22:46
Antworten mit Zitat
Benutzer-Profile anzeigen
http://www.blitz-pasting.net/

Da gehst du links oben auf "Upload Pasting" und lädst dein Bild hoch. Anschließend postest du hier den Link.
www.illusion-games.de
Space War 3 | Space Race | Galaxy on Fire | Razoon
Gewinner des BCC #57 User posted image
 

timo_81

BeitragDi, Sep 20, 2005 23:06
Antworten mit Zitat
Benutzer-Profile anzeigen
http://www.blitz-pasting.net/i...amp;id=331

Firstdeathmaker

BeitragMi, Sep 21, 2005 7:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich verstehe nicht ganz wo das Problem ist...

Meinst du eine Minimap die nur so als eine Art Radar funktionieren soll oder eine Karte von der nur ein kleiner Ausschnitt angezeigt werden soll, also das wo sich der Spieler gerade befindet?
www.illusion-games.de
Space War 3 | Space Race | Galaxy on Fire | Razoon
Gewinner des BCC #57 User posted image
 

timo_81

BeitragMi, Sep 21, 2005 11:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Zeigt die 'Karte' ja sowas wie ein Radar.
Ist eigentlich nur ne zweite Cam die alles von oben zeigt und ein
höheren CameraRange hat.
Mein einziges Problem ist es in diese Leiste zu bekommen wie bei
kommerziellen Spielen.

Er zeigt mir entweder die Leist oder and gleicher Stelle die mini-map
ich würde es gern jedoch in die Leiste bekommen.

greetz timo

Firstdeathmaker

BeitragMi, Sep 21, 2005 12:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Ok, dann würde ich das so machen:

Lass den Platz an dem du die Minimap einzeichnen möchtest einfach in der GUI komplett frei. Du darst also keine anderen Sachen an der Stelle nach dem Befehl Renderworld() einzeichnen, sonst wird die Minimap von diesen verdeckt.
www.illusion-games.de
Space War 3 | Space Race | Galaxy on Fire | Razoon
Gewinner des BCC #57 User posted image
 

timo_81

BeitragMi, Sep 21, 2005 12:36
Antworten mit Zitat
Benutzer-Profile anzeigen
danke ich werd es versuchen ich meld mich wieder
gruß
timo

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group