Backgroundcolor eines Windows/Farbverläufe
schieb mal das Fenster teilweise aus dem sichtbaren Bereich heraus und ziehDark Skillu hat geschrieben:DankeAber was ist mit dem refreshen?
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²
- Dark Skillu
- Beiträge: 103
- Registriert: 18.03.2007 15:03
- Dark Skillu
- Beiträge: 103
- Registriert: 18.03.2007 15:03
Habs nochmal proggen müssen, hier:
RGB1: obere Farbe
RGB2: untere Farbe
Ich hoffe das bringt dir was.
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
RGB2: untere Farbe
Ich hoffe das bringt dir was.
Habs mal umgeschrieben und erst auf ein Image gezeichnet.
Refreshen übernimmt dann Windows
Refreshen übernimmt dann Windows

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
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive