Inheritance: System.Windows.Controls.Control
Exemplo n.º 1
0
        static void BrushChangedInternal(DependencyObject property, DependencyPropertyChangedEventArgs args)
        {
            ColorBox c     = property as ColorBox;
            Brush    brush = args.NewValue as Brush;

            if (!c._BrushSetInternally)
            {
                c._BrushTypeSetInternally = true;

                if (brush == null)
                {
                    c.BrushType = BrushTypes.Solid;
                    c.Color     = Color.FromArgb(255, 255, 0, 0);
                }
                else if (brush is SolidColorBrush)
                {
                    c.BrushType = BrushTypes.Solid;
                    c.Color     = (brush as SolidColorBrush).Color;
                }
                else if (brush is LinearGradientBrush)
                {
                    LinearGradientBrush lgb = brush as LinearGradientBrush;
                    //c.Opacity = lgb.Opacity;
                    c.StartX       = lgb.StartPoint.X;
                    c.StartY       = lgb.StartPoint.Y;
                    c.EndX         = lgb.EndPoint.X;
                    c.EndY         = lgb.EndPoint.Y;
                    c.MappingMode  = lgb.MappingMode;
                    c.SpreadMethod = lgb.SpreadMethod;
                    c.Gradients    = new ObservableCollection <GradientStop>(lgb.GradientStops);
                    c.BrushType    = BrushTypes.Linear;
                    //c.Color = lgb.GradientStops.OrderBy(x => x.Offset).Last().Color;
                    //c.SelectedGradient = lgb.GradientStops.OrderBy(x => x.Offset).Last();
                }
                else
                {
                    /*
                     * c.BrushType = BrushTypes.Solid;
                     * c.Color = Color.FromArgb(255, 255, 0, 0);
                     */

                    RadialGradientBrush rgb = brush as RadialGradientBrush;
                    c.GradientOriginX = rgb.GradientOrigin.X;
                    c.GradientOriginY = rgb.GradientOrigin.Y;
                    c.RadiusX         = rgb.RadiusX;
                    c.RadiusY         = rgb.RadiusY;
                    c.CenterX         = rgb.Center.X;
                    c.CenterY         = rgb.Center.Y;
                    c.MappingMode     = rgb.MappingMode;
                    c.SpreadMethod    = rgb.SpreadMethod;
                    c.Gradients       = new ObservableCollection <GradientStop>(rgb.GradientStops);
                    c.BrushType       = BrushTypes.Radial;
                    //c.Color = rgb.GradientStops.OrderBy(x => x.Offset).Last().Color;
                    //c.SelectedGradient = rgb.GradientStops.OrderBy(x => x.Offset).Last();
                }

                c._BrushTypeSetInternally = false;
            }
            else
            {
                c.RaiseBrushChangedEvent((Brush)args.NewValue);
            }
        }
Exemplo n.º 2
0
        static void BrushChanged(DependencyObject property, DependencyPropertyChangedEventArgs args)
        {
            ColorBox c     = property as ColorBox;
            Brush    brush = args.NewValue as Brush;

            if (!c._BrushSetInternally)
            {
                c._BrushTypeSetInternally = true;

                if (brush == null)
                {
                    c.BrushType = BrushTypes.None;
                }
                else if (brush is SolidColorBrush)
                {
                    var sbrush = (SolidColorBrush)brush;
                    var fbrush = _wpfBrushTypes.FirstOrDefault(x => ((SolidColorBrush)x.Brush).Color == sbrush.Color);
                    if (fbrush != null)
                    {
                        c.BrushType = BrushTypes.Predefined;
                    }
                    else
                    {
                        c.BrushType = BrushTypes.Solid;
                    }
                    c.Color = (brush as SolidColorBrush).Color;
                }
                else if (brush is LinearGradientBrush)
                {
                    LinearGradientBrush lgb = brush as LinearGradientBrush;
                    //c.Opacity = lgb.Opacity;
                    c.StartX       = lgb.StartPoint.X;
                    c.StartY       = lgb.StartPoint.Y;
                    c.EndX         = lgb.EndPoint.X;
                    c.EndY         = lgb.EndPoint.Y;
                    c.MappingMode  = lgb.MappingMode;
                    c.SpreadMethod = lgb.SpreadMethod;
                    c.Gradients    = new ObservableCollection <GradientStop>(lgb.GradientStops);
                    c.BrushType    = BrushTypes.Linear;
                    //c.Color = lgb.GradientStops.OrderBy(x => x.Offset).Last().Color;
                    //c.SelectedGradient = lgb.GradientStops.OrderBy(x => x.Offset).Last();
                }
                else
                {
                    RadialGradientBrush rgb = brush as RadialGradientBrush;
                    c.GradientOriginX = rgb.GradientOrigin.X;
                    c.GradientOriginY = rgb.GradientOrigin.Y;
                    c.RadiusX         = rgb.RadiusX;
                    c.RadiusY         = rgb.RadiusY;
                    c.CenterX         = rgb.Center.X;
                    c.CenterY         = rgb.Center.Y;
                    c.MappingMode     = rgb.MappingMode;
                    c.SpreadMethod    = rgb.SpreadMethod;
                    c.Gradients       = new ObservableCollection <GradientStop>(rgb.GradientStops);
                    c.BrushType       = BrushTypes.Radial;
                    //c.Color = rgb.GradientStops.OrderBy(x => x.Offset).Last().Color;
                    //c.SelectedGradient = rgb.GradientStops.OrderBy(x => x.Offset).Last();
                }

                c._BrushTypeSetInternally = false;
            }
        }