Seite 1 von 1
Farbverlauf
Verfasst: 06.01.2005 20:29
von Andreas21
Hei,
hat jemand eine idee wie man einen Farbverlauf mit 4 Farben machen kann?
Einen Farbverlauf mit 2 Farben habe ich schon im Code Archive gefunden.
Mit 4 Farben meine ich das man 4 RGB Farben angeben kann die dann von allen 4 Ecken eines Fenster zur Mitte verlauffen.
Ich hoffe das ist verständlich
Verfasst: 06.01.2005 21:10
von GPI
Selber zeichen:
Code: Alles auswählen
Clu_red=255
Clu_green=255
Clu_blue=255
Cru_red=255
Cru_green=0
Cru_blue=0
Clb_red=0
Clb_green=255
Clb_blue=0
Crb_red=0
Crb_green=0
Crb_blue=255
Width=200:Height=200
CreateImage(0,Width,Height)
StartDrawing(ImageOutput())
For y=0 To Height-1
CLeft_red =Clu_red + (Clb_red -Clu_red )*y/(Height-1)
CLeft_green=Clu_green + (Clb_green-Clu_green)*y/(Height-1)
CLeft_blue =Clu_blue + (Clb_blue -Clu_blue )*y/(Height-1)
CRight_red =Cru_red + (Crb_red -Cru_red )*y/(Height-1)
CRight_green=Cru_green + (Crb_green-Cru_green)*y/(Height-1)
CRight_blue =Cru_blue + (Crb_blue -Cru_blue )*y/(Height-1)
For x=0 To Width-1
C_red =CLeft_red + (CRight_red -CLeft_red )*x/(Width-1)
C_green=CLeft_green + (CRight_green-CLeft_green)*x/(Width-1)
C_blue =CLeft_blue + (CRight_blue -CLeft_blue )*x/(Width-1)
Plot(x,y,RGB(C_red,C_green,C_blue))
Next
Next
StopDrawing()
If OpenWindow(1,0,0,200,200,#PB_Window_ScreenCentered|#PB_Window_SystemMenu,"Test")
If CreateGadgetList(WindowID())
ImageGadget(0,0,0,Width,Height,ImageID())
Repeat
event=WaitWindowEvent()
Until event=#PB_Event_CloseWindow
EndIf
EndIf
Verfasst: 06.01.2005 21:15
von DarkDragon
So:
Code: Alles auswählen
#WindowWidth = 500
#WindowHeight = 400
#WindowFlags = #PB_Window_TitleBar | #PB_Window_MaximizeGadget | #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_ScreenCentered
Version.f = 1.0
Global hWnd.l, Event
Procedure MyWindowCallback(WindowID, Message, wParam, lParam)
Result = #PB_ProcessPureBasicEvents
If Message = #WM_SIZE
glViewport_(0, 0, WindowWidth(), WindowHeight())
Result = 1
EndIf
ProcedureReturn Result
EndProcedure
If OpenWindow(0, 0, 0, #WindowWidth, #WindowHeight, #WindowFlags, "OpenGL Scene "+StrF(Version, 1))
SetWindowCallback(@MyWindowCallback())
hWnd = WindowID(0)
hDC = GetDC_(hWnd)
;Initialize OpenGL
pfd.PIXELFORMATDESCRIPTOR
pfd\nSize = SizeOf(PIXELFORMATDESCRIPTOR)
pfd\nVersion = 1
pfd\dwFlags = #PFD_SUPPORT_OPENGL | #PFD_DOUBLEBUFFER | #PFD_DRAW_TO_WINDOW
pfd\iLayerType = #PFD_MAIN_PLANE
pfd\iPixelType = #PFD_TYPE_RGBA
pfd\cColorBits = 24
pfd\cDepthBits = 32
pixformat = ChoosePixelFormat_(hDC, pfd)
SetPixelFormat_(hDC, pixformat, pfd)
hrc = wglCreateContext_(hDC)
wglMakeCurrent_(hDC, hrc)
SwapBuffers_(hDC)
glEnable_($0B71)
glShadeModel_($1D01)
Repeat
glClear_($00004000 | $00000100)
glLoadIdentity_()
glBegin_($0007)
glColor3f_(1.0, 0.0, 0.0) : glVertex2f_(-1.0,-1.0)
glColor3f_(0.0, 1.0, 0.0) : glVertex2f_( 1.0,-1.0)
glColor3f_(1.0, 1.0, 0.0) : glVertex2f_( 1.0, 1.0)
glColor3f_(0.0, 0.0, 1.0) : glVertex2f_(-1.0, 1.0)
glEnd_()
SwapBuffers_(hDC)
Event = WindowEvent()
Until Event = #PB_Event_CloseWindow
End
EndIf
Gehts auch

Verfasst: 06.01.2005 22:48
von Andreas21
Danke für eure beispeile.
OpenGL kann ich leider nicht gebrauchen aber das von GPI ist super
Das mit den 2 Farben habe ich ja begriffen. Ich habe es nur nicht geschaft es mit 4 Farben zu machen. Danke.