CustomGradient()
Синтаксис
CustomGradient(@GradientCallback())
Описание
Устанавливает градиент цвета пользовательского вида, определяемого указанной процедурой обратного вызова.
Параметры
@GradientCallback() Адрес процедуры обратного вызова для определения градиента. Она должна быть объявлена следующим образом: Procedure.f GradientCallback(x, y) ; ; Возвратим значение между 0.0 и 1.0 чтобы задать градиент в позиции x, y. ; ProcedureReturn 1.0 EndProcedure
Обратный вызов выполняется для каждого пикселя, затронутого операцией рисования. Он должен возвратить значение между 0.0 и 1.0 (не цвет) для задания градиента в данной позиции.
Координаты x и y, полученные в обратном вызове, всегда относятся к левому верхнему углу поверхности вывода графики. Координаты не изменяются с вызовами функций SetOrigin() или ClipOutput().
Возвращаемое значение
Ничего.
Комментарии
По умолчанию значение 0.0 соответствует текущему цвету фона, а значение 1.0 соответствует текущему цвету рисования. Добавить цвета в градиент можно командой GradientColor().
Эта процедура будет вызвана много раз (для каждого рисуемого пикселя), поэтому она должна быть очень мала и быстра, чтобы не слишком сильно повлиять на скорость рисования.
Примечание: Эта команда имеет эффект только с ImageOutput() и CanvasOutput(). Градиент рисуется, только если активируется режим #PB_2DDrawing_Gradient команды DrawingMode().
Пример
Procedure.f GradientCallback(x, y) ProcedureReturn Sin(x * 0.1) * Sin(y * 0.1) ; Будет между 0 и 1 EndProcedure If OpenWindow(0, 0, 0, 400, 200, "2DDrawing Example", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) If CreateImage(0, 400, 200) And StartDrawing(ImageOutput(0)) Box(0, 0, 400, 200, $FFFFFF) DrawingMode(#PB_2DDrawing_Gradient) BackColor($00FFFF) FrontColor($FF0000) CustomGradient(@GradientCallback()) Circle(100, 100, 100) Circle(300, 100, 100) StopDrawing() ImageGadget(0, 0, 0, 400, 200, ImageID(0)) EndIf Repeat Event = WaitWindowEvent() Until Event = #PB_Event_CloseWindow EndIf
См. также
GradientColor(), ResetGradientColors(), LinearGradient(), CircularGradient(), EllipticalGradient(), BoxedGradient(), ConicalGradient(), DrawingMode()
Поддерживаемые OS
Все