Вчерашние раскопки в интернетах подсказали одну задачу. Нашел пример, оставил на вечер. Вот только выяснилось, что пример на 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
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
Комментарии
Отправить комментарий