2016-11-03 5 views
2

Je possède ce code qui me permet d'ajouter un peu de mélange à ma forme de fenêtres:C# LinearGradientBrush. Comment puis-je changer le point où les deux couleurs se mélangent?

public partial class Form1 : Form 
{ 
    protected override void OnPaintBackground(PaintEventArgs e) 
    { 
     using (LinearGradientBrush brush = new LinearGradientBrush(this.ClientRectangle, 
       Color.White, 
       Color.Black, 
       LinearGradientMode.Vertical)) 
     { 
      e.Graphics.FillRectangle(brush, this.ClientRectangle); 
     } 
    } 
} 

Et ceci est le résultat:

enter image description here

Par défaut, le « pic » du mélange des deux couleurs est juste au milieu de la boîte. Je veux ajuster le code de telle sorte que le "pic" du mélange se produise environ 3/4 vers le haut. Est-il possible de changer le point où les deux couleurs commencent à se mélanger?

Merci d'avance.

Répondre

3

Vous pouvez définir InterpolationColors propriété de la brosse à un ColorBlend approprié par exemple:

using (var brush = new LinearGradientBrush(this.ClientRectangle, 
    Color.Transparent, Color.Transparent, LinearGradientMode.Vertical)) 
{ 
    var blend = new ColorBlend(); 
    blend.Positions = new[] { 0, 3/4f, 1 }; 
    blend.Colors = new[] { Color.White, Color.Black, Color.Black }; 
    brush.InterpolationColors = blend; 
    e.Graphics.FillRectangle(brush, this.ClientRectangle); 
} 

enter image description here

Ou par exemple un autre mélange:

blend.Positions = new[] { 0, 1/2f, 1 }; 
blend.Colors = new[] { Color.White, Color.Gray, Color.Black }; 

enter image description here

+0

La manière les couleurs blen d est tellement mieux que le code original. Merci Reza. – Pucho