Нарисуйте кривую с резко очерченными цветами в C#

Сообщение Нарисуйте кривую с несколькими цветами в C# показывает, как вы можете рисовать кривую, которая постепенно меняется от одного цвета к другому, когда меняются координаты Y кривой. Однако вы не всегда можете постепенно менять цвета. В этом примере цвета резко меняются.

Смотрите предыдущий пример для базовый подход. Единственное отличие состоит в том, что этот пример дает свой LinearGradientBrush другой набор цветов.

В предыдущем примере кисть задала цвета в разных точках вдоль градиента. Кисть автоматически интерполируется, чтобы сочетать цвета.

[colors]
Этот пример определяет две цветовые позиции в градиенте для каждого цвета. Затем кисть должна сохранять цвет одинаковым между двумя экземплярами одного цвета. Например, кисть красного цвета в положении 0,0 и 0,2, поэтому она также должна быть красной. Это эффективно закрепляет цвета в кисти.

На рисунке 1 показаны градиенты цвета, используемые в предыдущем примере (вверху) и этом примере (внизу).

Следующий код показывает, как этот пример определяет его кисть.

// Создаем кисть для кривой.
using (LinearGradientBrush brush =
    new LinearGradientBrush(world_rect,
        Color.Red, Color.Blue, 270))
{
    ColorBlend blend = new ColorBlend();
    blend.Colors = new Color[]
    {
        Color.Red, Color.Red,
        Color.Orange, Color.Orange,
        Color.Yellow, Color.Yellow,
        Color.Green, Color.Green,
        Color.Blue, Color.Blue,
    };
    blend.Positions =
        new float[]
        {
            0.0f, 0.2f,
            0.2f, 0.4f,
            0.4f, 0.6f, 
            0.6f, 0.8f,
            0.8f, 1.0f,
        };
    brush.InterpolationColors = blend;
    ...
}

Код создает кисть, как раньше. Затем он создает ColorBlend и назначает его цвета и позиции цветов. Обратите внимание, что каждый цвет отображается дважды, а соседние цвета имеют одинаковые позиции.

Источник: http://csharphelper.com/blog/2016/02/draw-a-curve-with-sharply-delineated-colors-in-c/

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Adblock
detector