2016-02-28 1 views
0

Je regarde le constructeur pour la classe LinearGradientBrush et je vois qu'il a un override qui prend une collection de GradientStops et un double comme un angle.Est-il possible de récupérer l'angle d'un LinearGradientBrush dans le code?

Lorsque je regarde ses propriétés, je ne peux pas trouver comment obtenir l'angle de la brosse une fois qu'il a été défini.

Y at-il un moyen de le faire, ou vais-je devoir écrire une fonction qui regarde les points de départ et de fin et calcule l'angle de ceux-ci? (Blech - s'il vous plaît ne me dites pas que c'est ma seule option ...)

Répondre

1

Je ne peux pas trouver comment obtenir l'angle de la brosse une fois qu'il a été défini.

Selon referencesource.microsoft.com, angle ne sont pas stockées, mais juste utilisé pour calculer EndPoint:

public LinearGradientBrush(GradientStopCollection gradientStopCollection, 
          double angle) : base (gradientStopCollection) 
{ 
    EndPoint = EndPointFromAngle(angle); 
} 

private Point EndPointFromAngle(double angle) 
{ 
    // Convert the angle from degrees to radians 
    angle = angle * (1.0/180.0) * System.Math.PI; 

    return (new Point(System.Math.Cos(angle), System.Math.Sin(angle)));    
} 

Comment s'y rendre angle de EndPoint devrait être simple.

+0

Merci. Est-il possible d'obtenir/définir un angle basé sur un double de 0.0D à 1.0D? (Je suppose que je devrais le demander comme une autre question ...) – Will

+0

J'ai peur de ne pas l'avoir compris. – AlexD

+0

C'est bon. Je pense avoir une idée de votre aide. – Will