2009-09-13 5 views
0

Je peins cet objet en C# en utilisant GDI et j'ai besoin d'avoir une peinture de pixels précise. Cependant, cela ne fonctionne pas ... Je ne sais pas si c'est important mais l'objet que je peins est un ToolStrip, je fais un rendu ToolStrip personnalisé.Comment peindre un dégradé précis avec LinearGradientBrush en C#?

J'ai dessiné une ligne horizontale bleue à y-pixel 1, qu'une ligne jaune à y-pixel 2 qu'une ligne rouge à y-pixel 3. Ce ne sont pas de vraies couleurs, c'est juste pour moi de mieux voir.

Comme ceci:

Color cTop1 = Color.FromArgb(255, Color.Blue); 
Color cTop2 = Color.FromArgb(255, Color.Yellow); 
Color cTop3 = Color.FromArgb(255, Color.Red); 

g.DrawLine(new Pen(cTop1), 0, 1, aBounds.Width, 1); 
g.DrawLine(new Pen(cTop2), 0, 2, aBounds.Width, 2); 
g.DrawLine(new Pen(cTop3), 0, 3, aBounds.Width, 3); 

Than, à y pixel 4 je commencé à remplir un rectangle avec le LinearGradientBrush comme ceci:

Rectangle rTop = new Rectangle(0, 3, aBounds.Width, (aBounds.Height/2) - 4); 

Color cTop = Color.FromArgb(245, Color.White); 
Color cBottom = Color.FromArgb(222, Color.White); 

LinearGradientBrush tGradient = new LinearGradientBrush(rTop, cTop, cBottom, LinearGradientMode.Vertical); 
g.FillRectangle(tGradient, rTop); 

Le problème est que le gradient est la peinture au-dessus du rouge ligne. Les couleurs bleu et jaune sont correctes, mais la ligne rouge, qui devrait être RGB = 255,0,0, est en fait RGB = 255,111,111.

Je ne comprends pas pourquoi ... Je l'ai joué dans SmoothingMode, InterpolationMode, CompositionMode, CompositionQuality mais je ne peux pas le faire à droite ...

Tout ideias?

Répondre

0

Il est possible que la brosse est enveloppé et ce que vous seeying est la couleur de oposite « saignant » dans.

Essayez et régler le WrapMode à

brush.WrapMode = Drawing2D.WrapMode.TileFlipXY 
+0

ne fonctionne pas, essayé toutes les autres modes de déformation aussi :( –

+0

En fait, cela a fonctionné, mais j'ai eu cette ligne "g.SmoothingMode = SmoothingMode.AntiAlias;" et nécessaire pour l'enlever. –

Questions connexes