Seite 1 von 1
Screen+ Drawing
Verfasst: 27.09.2006 18:50
von Alves
Ich glaub, ich habe grad ne große Blockade drin
Also eigentlich will ich nur einen Punkt auf einen Screenezcihnen, kriege eas aber nicht hin. Der Code funzt bei mir nicht (Screen bleibt schwarz)
Code: Alles auswählen
InitSprite()
InitKeyboard()
OpenScreen(800,600, 32, "")
Repeat
ClearScreen(0,0,0)
StartDrawing(ScreenOutput())
Plot(500,500, RGB(255,255,h255))
StopDrawing()
FlipBuffers()
ExamineKeyboard()
Until KeyboardPushed(#PB_Key_All)
Verfasst: 27.09.2006 19:09
von roherter
Bei mir gehts aber es kann sein das deine Grafikkarte den 32bit modus nicht unterstützt setz mal auf 16 oder 24

Verfasst: 27.09.2006 19:37
von STARGÅTE
Oje ja das Plot-Problem kenne ich.
Ich weiß auch nicht warum es manchmal geht und manchmal nicht, obwohl alles gleich ist.
Wenn du Line(500,500, 0,0, RGB(255,255,h255)) nimmst geht es.
PS:warumist da eingendlich ein h? RGB(255,255,h255))
Verfasst: 30.09.2006 11:09
von Alves
Hab ich gar nicht gesehen, das h. Werds mal ausprobieren.
Ne, geht nicht, auch nicht iohne h. Warum gibt es so große Probleme bei Plot?
@roherter
Ne geht auch mit 16 nicht. Normalerweise unterstützt mein Rechner auch 32 Bit.
Wenn ich den Code hier ausführe, dann wird auf dem Screen sofort 301 angezeigt. (als Text), obwohl i nur bis 300 gehen soll:
Code: Alles auswählen
#image=1
InitKeyboard()
InitSprite()
OpenScreen(1024, 768, 32, "billig")
CreateImage(#image, 300,300)
For i=0 To 300
StartDrawing(ImageOutput())
x=Random(300)
y=Random(300)
x1=Random(300)
y1=Random(300)
Select Random(1)
Case 0
green=Green(Point(x,y))-50
Case 1
green=Green(Point(x,y))+50
EndSelect
Select Random(1)
Case 0
red=Red(Point(x,y))-50
Case 1
red=Red(Point(x,y))+50
EndSelect
Select Random(1)
Case 0
blue=Blue(Point(x,y))-50
Case 1
blue=Blue(Point(x,y))+50
EndSelect
;Plot(x1,y1,RGB(red,green,blue))
Line(x1,y1,1,1,RGB(red,green,blue))
StopDrawing()
;StartDrawing(ScreenOutput())
;StopDrawing()
Next
Repeat
ClearScreen(0,0,0)
ExamineKeyboard()
StartDrawing(ScreenOutput())
;DrawImage(#image, 362, 200, 300,300)
Locate(800, 600)
DrawText(Str(i))
StopDrawing()
FlipBuffers()
Until KeyboardPushed(#PB_Key_All)
Verfasst: 30.09.2006 11:32
von Kaeru Gaman
das ist richtig so.
im letzten schleichendurchlauf ist i=300
nach der schleife ist i=301
das NEXT ist im grunde:
Verfasst: 30.09.2006 11:38
von Alves
Also okay, dann ist das richtig so. Aber irgendwie lösen sich meine anderen Problemen nicht, aber egal.
Danke für die Hilfe!
PS: Ist Fred das mit Plot bekannt?
Verfasst: 30.09.2006 11:52
von Kaeru Gaman
probiers doch mal mit Box(x,y,1,1)
das ist irgendeine unvertraglichkeit vom DirectDraw7 mit irgendwelcher spezifischen Hardware-Treiber-Kombination.
probier erstmal das:
Code: Alles auswählen
InitSprite()
InitKeyboard()
OpenScreen(800,600, 32, "")
Repeat
ClearScreen(0,0,0)
StartDrawing(ScreenOutput())
FrontColor($FFFFFF)
Plot(500,500)
StopDrawing()
FlipBuffers()
ExamineKeyboard()
Until KeyboardPushed(#PB_Key_All)
ob das geht.
und wenn nich, dann setz mal den Box oder den Line-Befehl ein.
Verfasst: 30.09.2006 13:19
von #NULL
@alves
ich hab bei manchen kombinationen von auflösung und bildwiederholfrequenz immer einen verzerrten fullscreen (k.a. warum), so dass teile des screens nicht zu sehen sind. z.b. bei 800x600, 60Hz.
falls du dir da nicht sicher bist kannste ja mal mit nem
DrawingMode(#PB_2DDrawing_Outlined)
Box(0,0, 800,600, $ffffff)
testen, ob alle linien zu sehen sind.
[ist da mein bildschrim kaputt?]
Verfasst: 30.09.2006 16:53
von FGK
Gelöscht!