【问题标题】:Scaled ellipse over button, button not clickable按钮上的缩放椭圆,按钮不可点击
【发布时间】:2010-05-09 16:47:06
【问题描述】:

我正在使用以下代码在动画中缩放椭圆:

        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 的按钮上。使用静态椭圆且没有填充,该按钮是可点击的。现在也没有填充,但按钮不可点击。谁能告诉我如何解决这个问题?

【问题讨论】:

  • "使用静态椭圆且无填充,按钮可点击。现在也没有填充,但按钮不可点击。" ???没看懂这个。你的意思是当你的椭圆被填充时你的按钮是不可点击的?
  • 感谢您的回复。对不起,如果我不清楚,英语不是我的第一语言。我有一个 z-index 为 2 的按钮。在该按钮的顶部,我有一个没有填充的椭圆,z-index 为 3(图片的左侧)。在这种情况下,该按钮是可点击的。现在我有相同的按钮和相同的椭圆。我使用上面的代码来缩放椭圆(图片的右侧)。现在该按钮不可点击。图片可以在这里找到:xs.to/image-6A50_4BE86908.jpg我希望你现在明白我的问题了:)

标签: wpf c#-3.0 button wpf-controls ellipse


【解决方案1】:

使用您提供的代码,按钮是可点击的。

但是,如果您将椭圆的 Fill 设置为除 null 以外的任何值,即使设置为 Brushes.Transparent,单击也不会再到达按钮。

尝试将椭圆的 Fill 显式设置为 null:

newPHRadio.Fill = null;

【讨论】:

    猜你喜欢
    • 2021-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多