2010-04-02 5 views
0

Alors, voici le problème, j'essaie d'obtenir ce cercle pour aligner sur le nombre. Quand je fais ça en fusion ça me montre que j'ai une gauche (23), j'essaie de faire ça par programmation Canvas.SetLeft (thePanel, 23) ça dépasse. Mieux encore, si quelqu'un sait d'un contrôle comme celui-ci dans Silverlight faites le moi savoir. Qu'est-ce que cela fait est lorsque l'utilisateur clique sur un nombre le cercle vert est supposé aller à ce nombre de sorte qu'il semble que l'utilisateur l'a sélectionné. alt textParamètres TranslateX ou Canvas.SetLeft Propriété par programme dans Silverlight

Blend

Répondre

2

Sur votre objet Cercle, vous devez définir le rayon du cercle et l'attribut TranslateTransform. Disons que votre cercle a un rayon de 15:

private const double Radious = 15.0; 

private double _x = Radious; 
private double _y = Radious; 

private TranslateTransform _translation = new TranslateTransform(); 

et propriétés à poignée de coordonnées X et Y,

public double X 
    { 
     get { return this._x; } 
     set 
     { 
      this._x = value; 
      _translation.X = this._x - Radious; 
     } 
    } 

    public double Y 
    { 
     get { return this._y; } 
     set 
     { 
      this._y = value; 
      _translation.Y = this._y - Radious; 
     } 
    } 

le Cercle et Silverlight vous pouvez obtenir lorsque l'utilisateur a cliqué sur une toile, la mise ce code sur l'événement Click du panneau, et définir le centre du cercle où l'utilisateur a cliqué:

//Get the points where it was clicked 
Point clickPoint = e.GetPosition(Canvas); 

MyCircle.X = clickPoint.X; 
MyCircle.Y = clickPoint.Y; 

maintenant, si vous voulez tomber toujours dans des positions fixes, vous pouvez définir conditions qui, si un utilisateur clique autour d'un nombre, placez le centre du cercle au centre du nombre, ou changez juste la valeur de X de votre cercle pour passer à la position désirée.

Questions connexes