Seite 1 von 1

Screen+ Drawing

Verfasst: 27.09.2006 18:50
von Alves
Ich glaub, ich habe grad ne große Blockade drin :roll:

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 :freak:

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. :freak:

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:

Code: Alles auswählen

Var + Step
IF Var <= TO_Limit THEN JUMP_to_FOR

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!