在wpf中为PasswordChar设置动画?

问题描述 投票:0回答:1

有没有办法在scaleTransform属性上对装饰器进行动画处理,以便椭圆从一个小比例显示到另一个比例。 我的

OnRender()
方法中有以下代码:

protected override void OnRender(DrawingContext drawingContext)
{
    drawingContext.DrawEllipse(Brushes.Black, null, new Point(10, 10), 6, 6);
}

void AnimAdorner_Loaded(object sender, RoutedEventArgs e)
{
    DoubleAnimation d = new DoubleAnimation(0, 20, new Duration(TimeSpan.FromSeconds(1)));
    this.BeginAnimation(TranslateTransform.YProperty, d);
    this.BeginAnimation(TranslateTransform.XProperty, d);
}
wpf animation adorner adornerdecorator
1个回答
0
投票

要对装饰器绘制的椭圆的比例进行动画处理,您可以修改装饰器的 OnRender 方法以将 ScaleTransform 应用于 DrawingContext。然后,您可以对 ScaleTransform 进行动画处理以实现所需的动画效果。 您可以通过以下方式修改代码来实现此目的:

protected override void OnRender(DrawingContext drawingContext)
{
    // Create a ScaleTransform
    ScaleTransform scaleTransform = new ScaleTransform();
    
    // Apply the ScaleTransform to the drawing context
    drawingContext.PushTransform(scaleTransform);

    // Draw the ellipse
    drawingContext.DrawEllipse(Brushes.Black, null, new Point(10, 10), 6, 6);

    // Animate the ScaleTransform
    DoubleAnimation scaleAnimation = new DoubleAnimation(0, 1, TimeSpan.FromSeconds(1));
    scaleTransform.BeginAnimation(ScaleTransform.ScaleXProperty, scaleAnimation);
    scaleTransform.BeginAnimation(ScaleTransform.ScaleYProperty, scaleAnimation);

    // Pop the transform from the drawing context
    drawingContext.Pop();
}

void AnimAdorner_Loaded(object sender, RoutedEventArgs e)
{
    // Start the animation when the adorner is loaded
    this.InvalidateVisual(); // Force the adorner to redraw
}
© www.soinside.com 2019 - 2024. All rights reserved.