I have two brushes. I don't know wath type of brushes they are. They can be ImageBrushes, SolidBrushes or VisualBrushes. I have each in a variable of the "Brush" type.
I need to combine two brushes. How do I do it?
I tried this. But It didn't work. Here are Back and Front the brushes that need to me combined.
Border Bd = new Border();
Border Bdr = new Border();
Bd.Width = 1.0;
Bd.Height = 1.0;
Bd.Background = Back;
Bdr.Background = Front;
Bd.Child = Bdr;
Brush VB = new VisualBrush(Bd);
I need this because I am making a custom animation class to animate brushes. After making some test's I concluded that the error is in the combining of the brushes and not elsewhere in the class.
The resulting brush is completely transparent.
[EDIT]=========================================================================[EDIT]
Here is the complete BrushAnimation Class.
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows.Media.Animation; using System.Windows; using System.Windows.Media; using System.Windows.Controls; namespace WPFSoPaTest { class BrushAnimation : AnimationTimeline { protected override Freezable CreateInstanceCore() { return new BrushAnimation(); } public override Type TargetPropertyType { get { return typeof(Brush); } } static BrushAnimation() { FromProperty = DependencyProperty.Register("From", typeof(Brush), typeof(BrushAnimation)); ToProperty = DependencyProperty.Register("To", typeof(Brush), typeof(BrushAnimation)); } public static readonly DependencyProperty FromProperty; public Brush From { get { return (Brush)GetValue(BrushAnimation.FromProperty); } set { SetValue(BrushAnimation.FromProperty, value); } } public static readonly DependencyProperty ToProperty; public Brush To { get { return (Brush)GetValue(BrushAnimation.ToProperty); } set { SetValue(BrushAnimation.ToProperty, value); } } public override object GetCurrentValue(object defaultOriginValue, object defaultDestinationValue, AnimationClock animationClock) { Brush fromVal = ((Brush)GetValue(BrushAnimation.FromProperty)).CloneCurrentValue(); Brush toVal = ((Brush)GetValue(BrushAnimation.ToProperty)).CloneCurrentValue(); if ((double)animationClock.CurrentProgress == 0.0) return fromVal; //Here it workes fine. if ((double)animationClock.CurrentProgress == 1.0) return toVal; //It workes also here fine. toVal.Opacity = (double)animationClock.CurrentProgress; Border Bd = new Border(); Border Bdr = new Border(); Bd.Width = 1.0; Bd.Height = 1.0; Bd.Background = fromVal; Bdr.Background = toVal; Bd.Visibility = Visibility.Visible; Bdr.Visibility = Visibility.Visible; Bd.Child = Bdr; Brush VB = new VisualBrush(Bd); return VB; //But here it return's a transparent brush. //If I return the 'toVal' variable here it animates correctly the opacity. } } }