2010-05-09 41 views
0

Je mise à l'échelle d'une ellipse dans une animation avec le code suivant:ellipse Scaled sur le bouton, le bouton ne cliquable

 ScaleTransform myScTransform = new ScaleTransform(); 
     TransformGroup myTransGroup = new TransformGroup(); 
     myTransGroup.Children.Add(myScTransform); 
     newPHRadio.RenderTransform = myTransGroup; 
     newPHRadio.RenderTransformOrigin = new Point(0.5, 0.5); 

     Storyboard story = new Storyboard(); 
     DoubleAnimation xAnimation = new DoubleAnimation(1, ph.Bereik, new Duration(TimeSpan.FromSeconds(2))); 
     DoubleAnimation yAnimation = new DoubleAnimation(1, ph.Bereik, new Duration(TimeSpan.FromSeconds(2))); 
     DoubleAnimation doorzichtig = new DoubleAnimation(1, 0, new Duration(TimeSpan.FromSeconds(2))); 

     Storyboard.SetTarget(xAnimation, newPHRadio); 
     Storyboard.SetTarget(yAnimation, newPHRadio); 
     Storyboard.SetTarget(doorzichtig, newPHRadio); 

     DependencyProperty[] propertyChainX = new DependencyProperty[] { 
      Ellipse.RenderTransformProperty, 
      TransformGroup.ChildrenProperty, 
      ScaleTransform.ScaleXProperty 
     }; 

     DependencyProperty[] propertyChainY = new DependencyProperty[] { 
      Ellipse.RenderTransformProperty, 
      TransformGroup.ChildrenProperty, 
      ScaleTransform.ScaleYProperty 
     }; 

     string thePath = "(0).(1)[0].(2)"; 

     Storyboard.SetTargetProperty(xAnimation, new PropertyPath(thePath, propertyChainX)); 
     Storyboard.SetTargetProperty(yAnimation, new PropertyPath(thePath, propertyChainY)); 
     Storyboard.SetTargetProperty(doorzichtig, new PropertyPath(Ellipse.OpacityProperty)); 

     story.Children.Add(xAnimation); 
     story.Children.Add(yAnimation); 
     story.Children.Add(doorzichtig); 

     story.Duration = new Duration(TimeSpan.FromSeconds(60/ph.Frequentie)); 
     story.RepeatBehavior = RepeatBehavior.Forever; 
     story.Begin(); 

L'ellipse est construit avec le code suivant:

 Ellipse newPHRadio = new Ellipse(); 

     newPHRadio.Width = 1; 
     newPHRadio.Height = 1; 
     newPHRadio.SetValue(Canvas.LeftProperty, ph.xPositie + 7); 
     newPHRadio.SetValue(Canvas.TopProperty, ph.yPositie + 7); 
     newPHRadio.SetValue(Canvas.ZIndexProperty, 3); 

     newPHRadio.Stroke = new SolidColorBrush(Colors.Black); 
     newPHRadio.StrokeThickness = 0.03; 

Maintenant, la ellipse est mise à l'échelle sur un bouton qui a un z-index de 1. Avec une ellipse statique et pas de remplissage, le bouton est cliquable. Maintenant, il n'y a pas de remplissage, mais le bouton n'est pas cliquable. Quelqu'un peut-il me dire comment résoudre ce problème?

+0

« Avec une ellipse statique et sans remplissage, le bouton est cliquable Maintenant, il n'y a pas de remplissage aussi bien, mais le bouton est cliquable. ». ??? Je n'ai pas compris cela. Voulez-vous dire que votre bouton n'est pas cliquable lorsque votre ellipse est remplie? – Amsakanna

+0

Merci pour votre réponse. Désolé si je ne suis pas clair, l'anglais n'est pas ma langue maternelle. J'ai un bouton qui a un z-index de 2. Au-dessus de ce bouton, j'ai une ellipse sans remplissage et un z-index de 3 (partie gauche de l'image). Le bouton est cliquable dans ce cas. Maintenant, j'ai le même bouton et la même ellipse. J'utilise le code ci-dessus pour mettre à l'échelle l'ellipse (côté droit de l'image). Maintenant, le bouton n'est pas cliquable. L'image peut être trouvé ici: http://xs.to/image-6A50_4BE86908.jpg J'espère que vous comprenez ma question maintenant :) – user336720

Répondre

0

Avec le code que vous avez fourni le bouton est cliquable. Mais si vous définissez le remplissage de l'ellipse à tout sauf null, même à Brushes.Transparent, le clic ne le rendra plus au bouton.

Essayez de régler explicitement le remplissage de l'ellipse null:

newPHRadio.Fill = null;