В настоящее время я работаю над библиотекой DMX для C# .NET. В настоящий момент я застрял в создании цветового перехода на основе «начального цвета» и «цвета конца».Перемещение цвета на основе объектов System.Drawing.Color
Функция принимает 3 аргумента, сначала объект DMXController (в основном расширенный SerialPort), второй - startColor, а третий - endColor.
Вся трассировка будет обрабатываться в отдельном потоке, поэтому приложение не будет висеть.
Клиент DMX только светодиодный RGB контроллер так он принимает буквально значения RGB (например, красный = 255, 0, 0)
Я видел некоторые примеры с фиксированными цветами, но для этого проекта любой цвет может быть используемый.
Если я прав, максимальное количество шагов будет 255 шагов.
Каков наиболее эффективный способ сделать это? Каждый шаг цикла будет отправлен в DMXController, поэтому он должен быть своего рода циклом for-next или while, и каждый шаг будет отправлен.
Вот мой код до сих пор:
public static void FadeColor(DMXController controller, Color startColor, Color endColor)
{
Color currentColor = startColor;
Thread fadeColorThread = new Thread(delegate()
{
// Start For-Next/While loop
// Update currentColor with new RGB values
controller.SetChannel(1, currentColor.R);
controller.SetChannel(2, currentColor.G);
controller.SetChannel(3, currentColor.B);
controller.Update();
// If neccesary a delay like Thread.Sleep(5);
// End For-Next/While loop
});
fadeColorThread.Name = "DMX Color Transition Thread";
fadeColorThread.Start();
}
Если это быстрее, чтобы извлечь г, г, б значения из цветных объектов, прежде чем начать переход я осуществить это.
Я обнаружил, что цветовые переходы можно очень легко извлечь из результата линейной градиентной заливки. – TaW
TaW, спасибо за ваш комментарий. Вы имеете в виду создание линейной градиентной щетки с прямоугольником шириной 255 и 1 высотой для получения градиента, а затем получить пиксель цвета по пикселям (приращение позиции x)? –
Точно. Конечно, не будет 256 различий между цветами __all__, но в 24-битном пространстве RGB их также больше не будет. ((И если вы хотите использовать больше цветов, есть хороший формат для расширения lgb ..) – TaW