Backgroundcolor eines Windows/Farbverläufe

Anfängerfragen zum Programmieren mit PureBasic.
Andreas_S
Beiträge: 787
Registriert: 14.04.2007 16:48
Wohnort: Wien Umgebung
Kontaktdaten:

Beitrag von Andreas_S »

also der ":" wirkt wie ein Zeilenumbruch. und refreshen desswegen weil sich das window sonst aufhengt oder nicht mehr reagiert. Ich kanns auch nicht gut erklären.
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

Dark Skillu hat geschrieben:Danke :oops: Aber was ist mit dem refreshen?
schieb mal das Fenster teilweise aus dem sichtbaren Bereich heraus und zieh
es danach wieder rein (oder verdeck mit einem anderen Fenster einen
Teilbereich Deines Fensters). Du wirst sehen, dass die Linien nicht neu
gezeichnet werden und der überdeckte Bereich wieder die
Standard-Fensterhintergrundfarbe angenommen hat. Du musst also dafür
Sorge tragen, dass der Refresh der Linien von Dir übernommen wird.

Grüße ... Kiffi
a²+b²=mc²
Benutzeravatar
Dark Skillu
Beiträge: 103
Registriert: 18.03.2007 15:03

Beitrag von Dark Skillu »

Ich hab den Code fürn Farbverlauf in die Schleife gepackt und Problem ist eigtl. behoben abgesehen, dass man den Refresh mit nachvollziehen kann :cry: Kann man aber mit leben.
Ich benutze PureBasic 4.0.
Benutzeravatar
Dark Skillu
Beiträge: 103
Registriert: 18.03.2007 15:03

Beitrag von Dark Skillu »

Kann ich den Farbverlauf auch irgendwie für Gadgets benutzen?
Ich benutze PureBasic 4.0.
Andreas_S
Beiträge: 787
Registriert: 14.04.2007 16:48
Wohnort: Wien Umgebung
Kontaktdaten:

Beitrag von Andreas_S »

klar :wink:

PS. wennst die Procedure noch brauchst ich kann sie gleich posten ...
Andreas_S
Beiträge: 787
Registriert: 14.04.2007 16:48
Wohnort: Wien Umgebung
Kontaktdaten:

Beitrag von Andreas_S »

Habs nochmal proggen müssen, hier:

Code: Alles auswählen

Procedure ColorWall_(x,y,w,h,RGB1,RGB2)
 R=Red(RGB2)-Red(RGB1)
 StepR.d=R/h

 G=Green(RGB2)-Green(RGB1)
 StepG.d=G/h

 B=Blue(RGB2)-Blue(RGB1)
 StepB.d=B/h

 Red.d=Red(RGB1)
 Green.d=Green(RGB1)
 Blue.d=Blue(RGB1)
  For k=0 To h-1
   Red+StepR
   Green+StepG
   Blue+StepB
   RGB=RGB(Red,Green,Blue)
   Line(x,y+k,w,0,RGB)
  Next
 Debug RGB
EndProcedure


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

StartDrawing(WindowOutput(0))
 ColorWall_(10,10,480,480,RGB(255,0,0),RGB(0,0,255))
StopDrawing()

Repeat : Until WindowEvent()=#WM_CLOSE
RGB1: obere Farbe
RGB2: untere Farbe

Ich hoffe das bringt dir was.
Benutzeravatar
mk-soft
Beiträge: 3855
Registriert: 24.11.2004 13:12
Wohnort: Germany

Beitrag von mk-soft »

Habs mal umgeschrieben und erst auf ein Image gezeichnet.

Refreshen übernimmt dann Windows :allright:

Code: Alles auswählen

Procedure ColorWall_(x,y,w,h,RGB1,RGB2)
 R=Red(RGB2)-Red(RGB1)
 StepR.d=R/h

 G=Green(RGB2)-Green(RGB1)
 StepG.d=G/h

 B=Blue(RGB2)-Blue(RGB1)
 StepB.d=B/h

 Red.d=Red(RGB1)
 Green.d=Green(RGB1)
 Blue.d=Blue(RGB1)
  For k=0 To h-1
   Red+StepR
   Green+StepG
   Blue+StepB
   RGB=RGB(Red,Green,Blue)
   Line(x,y+k,w,0,RGB)
  Next
 Debug RGB
EndProcedure

#Wall = 0

; Image erzeugen
CreateImage(#Wall, 480, 480)
; Auf Image zeichnen
StartDrawing(ImageOutput(#Wall))
  ColorWall_(0,0,480,480,RGB(255,0,0),RGB(0,0,255))
StopDrawing()


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

  If CreateGadgetList(WindowID(0))
    ImageGadget(0, 10,10,480,480, ImageID(#Wall))
  EndIf

Repeat : Until WindowEvent()=#WM_CLOSE
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Antworten