WindowedScreen()

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Ligatur
Beiträge: 196
Registriert: 09.07.2006 00:41

Beitrag von Ligatur »

HeX0R hat geschrieben:Du erstellst einen 1 Pixel grossen Screen.
Auch mit Autostretch bleibt er dennoch relativ gesehn 1 Pixel gross.

Ich sehe zwar keinen Farbverlauf (wieso auch ?), aber alles ist weiss, was auch logisch ist, weil man quasi nur ein irre aufgeblasenes weisses Sprite sieht.

Code: Alles auswählen

If OpenWindowedScreen(WindowID(0), 0, 0, 1, 1, 1, 0, 0)  ; wir benötigen nicht die exakte Bildschirmbreite/-höhe, da diese automatisch angepasst werden...
Aus der Purebasic Hilfe zu OpenWindowedScreen. Das wird also nicht der Fehler sein. Bei mir entsteht kein Farbverlauf.
Benutzeravatar
Frogger
Beiträge: 425
Registriert: 14.03.2006 19:27
Kontaktdaten:

Beitrag von Frogger »

>>Jetzt habe ich noch einen weissen Balken über dem Schwarzen Hintergrund im Windows. Vielleicht auch noch die Höhe korrigieren?
Der weiße Balken kommt von

Code: Alles auswählen

  For i = 0 To #WindowWidth Step 10
  DisplaySprite(#box,i,0)
  Next 
Es wird alle 10 Pixel ein 10 Pixel breites Quadrat gezeichnet.
Ich nehme mal an, dass a14xerus das machen wollte.
Andernfalls kann ich mir nicht erklären wozu die For-Schleife gut sein soll.
[PB4.20]
Benutzeravatar
#NULL
Beiträge: 2238
Registriert: 20.04.2006 09:50

Beitrag von #NULL »

<willauchmitmachen>
@a14xerus
autostretch bezieht sich nur auf das darstellen des screens im fenster. beim zeichnen auf den screen, besitzt dieser trotzdem die angegebene groesse (1x1). farbverläufe würde ich nicht mit autostretch realisieren, zumal du den screen dann nicht mehr für andere ("objekt-")sprites nutzten kannst. dann macht autostretch auch nur sinn mit einem resizable window.

Code: Alles auswählen

If InitSprite() = 0
  MessageRequester("Error", "Fehlercode 1", #MB_OK|#MB_ICONERROR)
  End
EndIf
If InitSound() = 0
  MessageRequester("Error", "Fehlercode 2", #MB_OK|#MB_ICONERROR)
  End
EndIf
If InitKeyboard() = 0
  MessageRequester("Error", "Fehlercode 3", #MB_OK|#MB_ICONERROR)
  End
EndIf
If InitMouse() = 0
  MessageRequester("Error", "Fehlercode 4", #MB_OK|#MB_ICONERROR)
  End
EndIf

Enumeration
  #window_1
 
  #box
EndEnumeration

#WindowWidth = 400
#WindowHeight = 300

Global Ball_X.l = 0
Global Ball_Y.l = 0

Procedure Fenster()
  If OpenWindow(#window_1,0,0,#WindowWidth,#WindowHeight,"MiniGame by Alexander N",#PB_Window_ScreenCentered|#PB_Window_MinimizeGadget |#PB_Window_SizeGadget )
    If CreateGadgetList(WindowID(#window_1))
      If OpenWindowedScreen(WindowID(#window_1),0,0,#WindowWidth,#WindowHeight,1,0,0)
     
        CreateSprite(#box,#WindowWidth,#WindowHeight)
          StartDrawing(SpriteOutput(#box))
            For i=0 To #WindowWidth
              LineXY(i,0,i,#WindowHeight, (i*255/#WindowWidth)<<8 )
            Next
            For i=100 To 0 Step -1
              Circle(#WindowWidth/2,#WindowHeight/2, i, (100-i)*255/100 )
            Next
            ;Box(0,0,10,10,RGB(255,255,255))
          StopDrawing()
      EndIf
    EndIf
  EndIf
EndProcedure


Procedure ende()
  End
EndProcedure


Fenster()
Repeat
  Delay(5)
 
  Event = WindowEvent()
  WindowID = EventWindow()
  GadgetID = EventGadget()
  EventType = EventType()
 
  If Event = #PB_Event_CloseWindow
    Select MessageRequester("Ende", "Wollen sie wirklich beenden?", #MB_YESNO|#MB_ICONQUESTION)
      Case #IDYES
        ende()
    EndSelect
  EndIf
 
  ExamineKeyboard()
  ClearScreen($000)

  ;For i = 0 To #WindowWidth Step 10
    DisplaySprite(#box,0,0)  ;wenn ich das hier auskommentier habe ich einen normalen schwarzen hintergund.. wenn nicht kommt bei mir ein farbverlauf.. oder macht das nur meine Grafikkarte?0
  ;Next
 
  FlipBuffers()
ForEver
my pb stuff..
Bild..jedenfalls war das mal so.
Benutzeravatar
HeX0R
Beiträge: 3042
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3
Kontaktdaten:

Beitrag von HeX0R »

Ligatur hat geschrieben:
HeX0R hat geschrieben:Du erstellst einen 1 Pixel grossen Screen.
Auch mit Autostretch bleibt er dennoch relativ gesehn 1 Pixel gross.

Ich sehe zwar keinen Farbverlauf (wieso auch ?), aber alles ist weiss, was auch logisch ist, weil man quasi nur ein irre aufgeblasenes weisses Sprite sieht.

Code: Alles auswählen

If OpenWindowedScreen(WindowID(0), 0, 0, 1, 1, 1, 0, 0)  ; wir benötigen nicht die exakte Bildschirmbreite/-höhe, da diese automatisch angepasst werden...
Aus der Purebasic Hilfe zu OpenWindowedScreen. Das wird also nicht der Fehler sein. Bei mir entsteht kein Farbverlauf.
Antwort:
#NULL hat geschrieben: autostretch bezieht sich nur auf das darstellen des screens im fenster. beim zeichnen auf den screen, besitzt dieser trotzdem die angegebene groesse (1x1)
Jetzt hast du es schon zweimal dastehen, vielleicht kommt es dir jetzt ja näher...
a14xerus
Beiträge: 1440
Registriert: 14.12.2005 15:51
Wohnort: Aachen

Beitrag von a14xerus »

Ich war seit ich die Frage gestellt hatte nichtmehr on.. Ich bin nicht drauf gekommen, das die relative Größe des Screens nur 1x1 ist.. jetz ist es mir natürlich klar.. danke an alle
ach und $000 steht auch in der hilfe als kurzschreibweise^^
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

Ligatur hat geschrieben:

Code: Alles auswählen

If OpenWindowedScreen(WindowID(0), 0, 0, 1, 1, 1, 0, 0)  ; wir benötigen nicht die exakte Bildschirmbreite/-höhe, da diese automatisch angepasst werden...
Aus der Purebasic Hilfe zu OpenWindowedScreen. Das wird also nicht der Fehler sein. Bei mir entsteht kein Farbverlauf.
gut, vielleicht ist es nicht sein fehler, aber trotzdem.
ist da die help mal wieder zu speziell?
hab hier kein PB zur Hand.
Ich frag mich halt, was das für ein Beispiel ist, wo ein 1x1 screen gemacht wird.
ich schätze halt, dass da vielleicht doch eins ums andere beispiel doch etwas zu hochtrabend für anfänger ist.

> und $000 steht auch in der hilfe als kurzschreibweise^^
das würde ich auch mal korrigieren.
es ist zwar nicht wirklich falsch in dem sinne dass es keine Null wäre,
aber der Farbwert ist nunmal eine 24bit-zahl, und eine 24bit-Zahl hat 6 stellen als HEX.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Antworten