Question

Je dois écrire plusieurs petits gradients verticaux (sur une boucle) et je pense donc qu'il est plus rapide de réutiliser un brouillon linéaire existant (correct?)

Mais ce n'est pas ce que je m'attendais à arriver ...

  Drawing2D.LinearGradientBrush myBrush = new Drawing2D.LinearGradientBrush(new Rectangle(0, 0, 200, 200), Color.Red, Color.Black, Drawing2D.LinearGradientMode.Vertical);
  myBrush.LinearColors[1] = Color.Blue;
  MsgBox(myBrush.LinearColors[1].ToString); //Returns black

Ainsi, y a-t-il une erreur sur le code ci-dessus, soit un meilleur moyen d'obtenir plusieurs gradients verticaux sur une boucle, ou d'une manière différente de changer les couleurs de la lineargradientbrush?

Merci:)

Était-ce utile?

La solution

Construire une brosse ne coûte presque rien par rapport au travail effectué pour attirer quelque chose avec le pinceau.

Aussi, essayez de régler l'ensemble de la matrice au lieu de remplacer un seul élément.

myBrush.LinearColors = new Color[2] { Color.Blue, Color.Whatever };

Autres conseils

C'est peut-être universitaire (et peut-être une grande partie de cela est évident dans Retrospect!), mais la raison enchante qu'une seule couleur ne fonctionne pas est que les couleurs sont extraites de code non géré avant de vous être présentées - vous êtesÉtant donné une copie de la couleur et c'est ce que vous changez.Ou, pour le mettre plus formellement, la valeur L dans votre relevé est transmise par la valeur et il n'y a pas de mécanisme de mise à jour de l'original.

Lorsque vous modifiez l'ensemble du tableau de gradient, le constructeur de propriétés de la matrice écrit les modifications à l'objet non géré.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top