c # Нелинейные градиентные кисти? - PullRequest
2 голосов
/ 22 апреля 2009

Есть ли метод, который я могу использовать для создания нелинейных градиентных кистей в c #?

Чтобы уточнить: я не ищу градиент, который может быть применен к нелинейному пути. Скорее, я ищу градиент между двумя цветами, который исчезает между ними нелинейным образом, то есть скорость изменений быстрее в начале градиента и замедляется, когда кисть приближается к конечной точке.

Возможно ли это вообще в C # с использованием gdi +?

Ответы [ 2 ]

7 голосов
/ 22 апреля 2009

Да, установите смесь для кисти.

LinearGradientBrush blendBrush = new LinearGradientBrush(Rectangle, Color.Red, Color.White, 360f);
Blend blend = new Blend();
blend .Factors = new float[] { 1.0f, 0.9f, 0.8f, 0.7f, 0.6f, 0.5f, 0.4f, 0.5f, 0.6f, 0.7f, 0.8f };
blend .Positions = new float[] { 0, 0.1f, 0.2f, 0.3f, 0.4f, 0.5f, 0.6f, 0.7f, 0.8f, 0.9f, 1.0f };
blendBrush.Blend = blend ;

Этот пример начнет исчезать, а затем вернется к предыдущему цвету. Это своего рода эффект от центра.

2 голосов
/ 22 апреля 2009

Используйте свойство Blend LinearGradientBrush -

http://msdn.microsoft.com/en-us/library/system.drawing.drawing2d.blend(VS.80).aspx

...