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
Farbverlauf
-
Andreas21
- Beiträge: 390
- Registriert: 30.08.2004 09:05
- Computerausstattung: Desktop
Windows 10 Pro x64
CPU: AMD Ryzen 5 2600 3.40 GHz
Ram: 16GB RAM
Grafik: NVIDA Geforce 1060
PB: 5.72 X86/X64 - Wohnort: Heidelberg
Farbverlauf
Windows 10 x64 Pro - PB 5.61 X64 / x32 - PB 4.6 x32
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
EndIfCodeArchiv Rebirth: Deutsches Forum Github Hilfe ist immer gern gesehen!
-
DarkDragon
- Beiträge: 6291
- Registriert: 29.08.2004 08:37
- Computerausstattung: Hoffentlich bald keine mehr
- Kontaktdaten:
So:
Gehts auch 
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
EndIfAngenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.