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.
}
}
}