0

次のコードを使用して、アニメーションで楕円をスケーリングしています。

        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();

楕円は次のコードで作成されます。

        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;

これで、z-index が 1 のボタン上で楕円がスケーリングされます。静的な楕円で塗りつぶしがない場合、ボタンはクリック可能です。塗りつぶしもありませんが、ボタンはクリックできません。誰かがこれを修正する方法を教えてもらえますか?

4

1 に答える 1

0

あなたが提供したコードで、ボタンはクリック可能です。

ただし、楕円の Fill を null 以外に設定すると、Brushes.Transparent に設定しても、クリックはボタンに到達しなくなります。

楕円の Fill を明示的に null に設定してみてください。

newPHRadio.Fill = null;
于 2010-05-12T21:07:27.360 に答える