Screen+ Drawing

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Alves
Beiträge: 1208
Registriert: 19.04.2006 18:24
Kontaktdaten:

Screen+ Drawing

Beitrag 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)
Benutzeravatar
roherter
Beiträge: 1407
Registriert: 10.04.2005 18:58
Kontaktdaten:

Beitrag 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:
Purebasic 5.0 32bit und 64 bit

I'm back from hell
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7031
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Beitrag 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))
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
Alves
Beiträge: 1208
Registriert: 19.04.2006 18:24
Kontaktdaten:

Beitrag 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)
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag 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
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Alves
Beiträge: 1208
Registriert: 19.04.2006 18:24
Kontaktdaten:

Beitrag 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?
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag 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.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
#NULL
Beiträge: 2238
Registriert: 20.04.2006 09:50

Beitrag 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?]
my pb stuff..
Bild..jedenfalls war das mal so.
Benutzeravatar
FGK
Beiträge: 249
Registriert: 09.01.2005 14:02
Computerausstattung: i5-4430 CPU / 8GB RAM
GeForce GT630
Windows 10 Home / 64-bit
Wohnort: Augsburg

Beitrag von FGK »

Gelöscht!
Antworten