2013-03-27 4 views
0

Есть ли способ изменить цвет/цвет фона программно и постоянно, например, я хочу, чтобы начальный цвет был совершенно синим (например), затем каждый вызов Update() Мне нужен фон медленно переходить на зеленый, затем желтый, затем синий и т. д. Я хочу, чтобы цвета исчезли до следующего цвета, а не просто внезапно переключались.XNA Изменение цвета фона программно

Любые идеи, как я могу это достичь? Я знаю, что есть GraphicsDevice.Clear(Color.CornflowerBlue);, но это явно не то, что я хочу.

Любая помощь очень ценится.

+3

Почему это не очевидно, что вы хотите? Вы можете очистить фон от каждой ничьей до слегка другого цвета. Структура Color позволяет настраивать цвета, поэтому вы можете легко создать эффект постепенного перехода от одного цвета к другому. –

ответ

1

GraphicsDevice.Clear - это именно то, что вы хотите.

Все, что вам еще нужно, это способ interpolating between colors:

var red = Color.Red; 
var green = Color.Green; 

// Gives you a color at half the distance between red and green 
var color = Color.Lerp(red, green, 0.5f); 

Если вы хотите, чтобы пройти через всю цветовую палитру можно преобразовать цвет в HSL or HSV и живой оттенок.

1

@BrianRasmussen полностью верен. Вы можете различать четкий цвет каждого кадра. Используйте один из конструкторов Color, который принимает числовые значения вместо значений перечисления цвета.

This one,

GraphicsDevice.Clear(new Color(byte r, byte g, byte b)); 

Or this one

GraphicsDevice.Clear(new Color(float r, float g, float b, float a)); 

И каждый кадр, обновлять значения r, g и b. Легко.