PureBasic rainbow gradient

 

Вчерашние раскопки в интернетах подсказали одну задачу. Нашел пример, оставил на вечер. Вот только выяснилось, что пример на VB и перевести код не получилось. Нашел другой пример. Вышла картинка


If InitSprite() And OpenWindow(0,0,0,640,480,"Rainbow Gradient",#PB_Window_SystemMenu) And OpenWindowedScreen(WindowID(0),0,0,640,480,0,0,0) 
  StartDrawing(ScreenOutput())
  Step_=1
  numOfSteps=640
  For j=1 To 640
    Step_=j
            r.f = 0.0;
            g.f = 0.0;
            b.f = 0.0;
            h.f = Step_ / numOfSteps;
            i = Int(h * 6);
            f.f = h * 6.0 - i
            q.f = 1 - f;
            Select (i % 6)
  
                Case 0:
                    r = 1;
                    g = f;
                    b = 0;
                Case 1:
                    r = q;
                    g = 1;
                    b = 0;
                Case 2:
                    r = 0;
                    g = 1;
                    b = f;
                Case 3:
                    r = 0;
                    g = q;
                    b = 1;
                Case 4:
                    r = f;
                    g = 0;
                    b = 1;
                Case 5:
                    r = 1;
                    g = 0;
                    b = q;
            EndSelect
            LineXY(j,0,j,480,RGB(Int(r*255),Int(g*255),Int(b*255)))
            Next j
  StopDrawing() 
      FlipBuffers() 
      Repeat
      Until WindowEvent()=#PB_Event_CloseWindow 
EndIf

сырок


Комментарии