我正在 WPF 应用程序中实现转换。
首先,我在 2 ImageBrush 中“保存”我的 2 FrameworkElement。然后我用它们设置我的着色器效果的 Input & Back (Brush) 属性。
CustomEffect s = new CustomEffect();
RenderTargetBitmap rtb = new RenderTargetBitmap((int)SourceFrameWorkElement.ActualWidth, (int)SourceFrameWorkElement.ActualHeight, 96, 96, PixelFormats.Pbgra32);
rtb.Render(SourceFrameWorkElement);
ImageBrush ib = new ImageBrush(rtb);
s.Input = ib;
rtb.Render(TargetFrameWorkElement);
ib.ImageSource = rtb;
s.Back = ib;
SourceFrameWorkElement.Effect = s;
现在一切都设置好了,我想为我的着色器的 Time 属性设置动画,我试过这个:
DoubleAnimation refDoubleAnimation = new DoubleAnimation(0.0, 1.0, Duration);
Storyboard.SetTarget(refDoubleAnimation, SourceFrameWorkElement);
Storyboard.SetTargetProperty(refDoubleAnimation, new PropertyPath("(Effect).(CustomEffect.Time)");
refStoryboard.Children.Add(refDoubleAnimation);
refStoryboard.Completed += new EventHandler(OnStoryboardCompleted);
refStoryboard.Begin(SourceFrameWorkElement, true);
我在 begin 方法上得到一个 InvalidOperationException 并带有此消息:
“无法解析属性路径 '(Effect).(CustomEffect.Time)' 中的所有属性引用。
验证适用的对象是否支持这些属性。”
但是当我使用像 BlurEffect 这样的内置效果时,它可以工作......
有人能告诉我哪里错了吗?
编辑:
我也试过
SourceElement.Effect.BeginAnimation(SlideInEffect.TimeProperty, refDoubleAnimation)
而不是使用情节提要,我没有得到异常,但是第二张图像立即弹出并且动画没有播放