CreateImage und trotzdem keine Bilder?
Übersicht

![]() |
M0rgensternBetreff: CreateImage und trotzdem keine Bilder? |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo.
Ich habe ein kleines Problem mit CreateImage... Das was die Boardsuche zu Tage gefördert hat, hilft mir nichts. Also, ich lasse zwei Bilder per Createimage erstellen ung setze danach wieder den Backbuffer. Wenn ich jetzt die Bilder zeichnen lassen will, dann scheint es als ob alles hängt. Der Bildschirmhintergrund wird zwar grau, aber die (weißen) Bilder werden nicht gemalt. In die Hauptschleife tritt er ein, 1. Ich habs mit Stop versucht und 2. Nur dort kann ich mit ESCAPE abbrechen, und das klappt auch wunderbar. Hier der Code: Code: [AUSKLAPPEN] AppTitle "Snake"
Graphics 800,600,32,2 ClsColor 50,50,50 Cls Global FTimer = CreateTimer(50) Type TStein Field Sx# Field kaputt Field Sy# End Type For x = 0 To ((GraphicsHeight()/2)/50) For i = 0 To (GraphicsWidth()/100) Stein.TStein = New TStein Stein\Sx# = i * 101 Stein\Sy# = x * 51 Next Next Type TBall Field Bx# Field By# Field BWinkel# Field BSpeed# Field BBild End Type Type TPlayer Field Px# Field Py# Field PLifes Field PSpeed# Field PBild End Type Global Spieler.TPlayer = New TPlayer Spieler\Px# = GraphicsWidth()/2 Spieler\Py# = GraphicsHeight() - 13 Spieler\PLifes = 3 Spieler\PSpeed# = 4 Spieler\PBild = CreateImage(50, 10) SetBuffer ImageBuffer(Spieler\PBild) Color 255,255,255 Rect Spieler\Px#, Spieler\Py#, 50, 10, 1 Global Ball.TBall = New TBall Ball\Bx# = GraphicsWidth()/2 Ball\By# = GraphicsHeight() - 30 Ball\BSpeed# = 3 Ball\BWinkel# = Rand(45,105) Ball\BBild = CreateImage(10,10) SetBuffer ImageBuffer(Ball\BBild) Color 255,255,255 Oval Ball\Bx#, Ball\By#, 10, 10, 1 SetBuffer BackBuffer() ClsColor 50,50,50 Cls Repeat WaitTimer FTimer Cls SpielerSteuerung() KugelBewegen() AllesZeichnen() Flip Until KeyDown(1) Function SpielerSteuerung() If KeyDown(203) And (Spieler\Px# > 2) Then Spieler\Px# = Spieler\Px# - Spieler\PSpeed# If KeyDown(205) And (Spieler\Px# < (GraphicsWidth()-51)) Then Spieler\Px# = Spieler\Px# + Spieler\PSpeed# End Function Function KugelBewegen() Ball\Bx# = Ball\Bx#+Cos(Ball\BWinkel#)*Ball\BSpeed# Ball\By# = Ball\By#-Sin(Ball\BWinkel#)*Ball\BSpeed# If Ball\Bx# <= 3 Then Ball\BWinkel# = 180-Ball\BWinkel# If Ball\Bx# >= (GraphicsWidth()-13) Then Ball\BWinkel# = 180 - Ball\BWinkel# If Ball\By# <= 3 Then Ball\BWinkel# = 360-Ball\BWinkel# ;If ImagesCollide(Ball\BBild, Ball\Bx#, Ball\By, 0, Spieler\PBild, Spieler\Px#, Spieler\Py#, 0) Then ; Ball\BWinkel# = 360-Ball\BWinkel# ;EndIf End Function Function AllesZeichnen() DrawImage Spieler\PBild, Spieler\Px#, Spieler\Py# DrawImage Ball\BBild, Ball\Bx#, Ball\By# ;For Stein.TStein = Each TStein ; Rect Stein\Sx#, Stein\Sy#, 99, 49, 1 ;Next End Function Hoffe ihr könnt mir helfen. Lg, M0rgenstern |
||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Nur kurz rauf geschaut, aber das hier sieht komisch aus:
BlitzBasic: [AUSKLAPPEN] Spieler\Px# = GraphicsWidth()/2 Das Bild beginnt bei den Koordinaten 0,0 und endet bei 49, 9 - Da X und Y weit von diesem Bereich entfernt liegen, zeichnest du nicht auf den sichtbaren Bereich des Bildes. |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
M0rgenstern |
![]() Antworten mit Zitat ![]() |
---|---|---|
ich dachte das hinter Createimage sei die GRÖSSE des Bildes (so stehts in der Hilfe).
Lg, M0rgenstern |
||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das ist ja auch richtig.
Wenn die Auflösung aber bei 800x600 liegt, zeichnest du vom punkt 400, 587 aus ein Rechteck in der Größe des Bildes... Da das Bild aber nur bis 49, 9 geht, ist es schlicht außerhalb des Bildes. Du siehst ja auch nichts, was du außerhalb des Bildschschirm zeichnest. Probier: BlitzBasic: [AUSKLAPPEN] Rect 0, 0, 50, 10, 1 |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
n-Halbleiter |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Das ist es. Allerdings zeichnest du das Rect außerhalb des Bildes (bei GraphicsWidth()/2,GraphicsHeight()-13). Du musst Code: [AUSKLAPPEN] Rect 0,0,50,10,1 machen. So wird das Rechteck bei 0,0 gezeichnet, und nicht irgendwo in der Pampa. ![]() |
||
mfg, Calvin
Maschine: Intel Core2 Duo E6750, 4GB DDR2-Ram, ATI Radeon HD4850, Win 7 x64 und Ubuntu 12.04 64-Bit Ploing! Blog "Die Seele einer jeden Ordnung ist ein großer Papierkorb." - Kurt Tucholsky (09.01.1890 - 21.12.1935) |
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Was Xeres dir zu erklären versucht ist folgendes:
Spieler\Px# = GraphicsWidth()/2 = 800/2 = 400 Spieler\Py# = GraphicsHeight()-13 = 600-13 = 587 Sowohl x=400 als auch y=587 befinden sich außerhalb des Bildes welches du mit nur x=50, y=10 erstellst Spieler\PBild = CreateImage(50, 10) Erste Rätselslösung ist folgendes umzustellen: Rect 0, 0, 50, 10, 1 |
||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
![]() |
M0rgenstern |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hey, danke. Jetzt hab ichs verstanden.
Ich hab jetzt aber mal ne Frage, was mir aufgefallen ist. Ich hab jetzt in dem einen Type (TStein) ein Feld Bild. Hier werden ja die Steine erstellt: Code: [AUSKLAPPEN] Type TStein
Field Sx# Field kaputt Field Sy# Field SBild End Type For x = 0 To ((GraphicsHeight()/2)/50) For i = 0 To (GraphicsWidth()/100) Stein.TStein = New TStein Stein\Sx# = i * 101 Stein\Sy# = x * 51 Stein\SBild = Createimage(99,49) Next Next und hier wird das Bild dann auf den Buffer gemalt: Code: [AUSKLAPPEN] For Stein.TStein = Each TStein
SetBuffer ImageBuffer(Stein\SBild) Color 255,255,255 Rect 0, 0, 99, 49, 1 Next Aber das kann doch eigentlich nicht sein, dass ich für JEDEN Stein ein extra Bild erstellen muss, ein Bild für jeden Stein würde doch reichen, oder? Lg, M0rgenstern |
||
![]() |
DaysShadow |
![]() Antworten mit Zitat ![]() |
---|---|---|
BlitzBasic: [AUSKLAPPEN] Global SteinBild = CreateImage(99, 49) So würde ich das machen, falls das so geht. Wie immer weiß ich nicht ob es so richtig ist. MfG DaysShadow |
||
Blessed is the mind too small for doubt |
![]() |
M0rgenstern |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ha... Genau sowas mein ich.
Dankeschön. |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group