Fenster neuzeichnen ohne flackern

Für allgemeine Fragen zur Programmierung mit PureBasic.
Lambda
Beiträge: 526
Registriert: 16.06.2011 14:38

Fenster neuzeichnen ohne flackern

Beitrag von Lambda »

ich zeichne um gadgets durch WindowOuput().. nur bewegen sich diese wodurch das altgezeichnete natürlich gelöscht werden muss. mit InvalidateRect ist das nur mit flackern möglich, gibt es noch eine andere Lösung?
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8838
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: Fenster neuzeichnen ohne flackern

Beitrag von NicTheQuick »

Entschuldige, aber mit etwas Grammatik würde ich besser verstehen, was du meinst. "ich zeichne um gadgets durch WindowOuput()" ergibt für mich keinen Sinn.
Benutzeravatar
bobobo
jaAdmin
Beiträge: 3875
Registriert: 13.09.2004 17:48
Kontaktdaten:

Re: Fenster neuzeichnen ohne flackern

Beitrag von bobobo »

Was flackert?

Code: Alles auswählen

OpenWindow(0,0,0,500,500,"pabsteier",#PB_Window_ScreenCentered|#PB_Window_SystemMenu)

ButtonGadget(0,10,10,200,100,"ich bin knopp"+#CRLF$+"wennze mich klicks, dann rutsch ich was beiseite",#PB_Button_MultiLine)
;drumrummalen
StartDrawing(WindowOutput(0))
  LineXY(5,5,5,120)
  LineXY(5,120,220,120)
  LineXY(220,120,220,5)
  LineXY(220,5,5,5)
StopDrawing()
lpRect.RECT
lpRect\left=0
lpRect\top=0
lpRect\right=WindowWidth(0)
lpRect\bottom=WindowHeight(0)
Repeat
  event=WaitWindowEvent()
  gadget=EventGadget()
  If event=#PB_Event_Gadget
    If gadget=0
      ;For x=1 To 30
      InvalidateRect_(WindowID(0),lpRect,#True) 
      ResizeGadget(0,GadgetX(0)+1,GadgetY(0)+1,#PB_Ignore,#PB_Ignore)
      InvalidateRect_(WindowID(0),lpRect,#False) 
      StartDrawing(WindowOutput(0))
        FrontColor(RGB(Random(128)+127,Random(128)+127,Random(128)+127))
        LineXY(GadgetX(0)-5,GadgetY(0)-5,GadgetX(0)+GadgetWidth(0)+10,GadgetY(0)-5)
        LineXY(GadgetX(0)+GadgetWidth(0)+10,GadgetY(0)-5,GadgetX(0)+GadgetWidth(0)+10,GadgetY(0)+GadgetHeight(0)+10)
        LineXY(GadgetX(0)+GadgetWidth(0)+10,GadgetY(0)+GadgetHeight(0)+10,GadgetX(0)-5,GadgetY(0)+GadgetHeight(0)+10)
        LineXY(GadgetX(0)-5,GadgetY(0)+GadgetHeight(0)+10,GadgetX(0)-5,GadgetY(0)-5)
      StopDrawing()
      ;Next
    EndIf
  EndIf
  If event=#PB_Event_CloseWindow
    quit+1
  EndIf
Until quit
End
Edit by NicTheQuick: Code-Tags gefixt
‮pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Antworten