[原创]c# wpf自定义 任意颜色阴影特效融合winform的探索之路

现在的需求需要高度定制,根据动态的配置生成动态的界面,所以网上一般的方式都是无法解决问题的。比如直接wpf控件拉进去使用的方式。
网上的资料太少,都是基于xml布局

做了一半项目发现winform没法实现阴影,结果发现wpf可以设置局部阴影,设置改变阴影颜色。
操作步骤,创建wpf用户控件,然后动态的添加到winform然后,插入一个画版 画板除了可以直接添加按钮外还可以添加一个矩形等等。


    
    
        
    



          DropShadowEffect dropShadowEffect = new DropShadowEffect();
            dropShadowEffect.Color = Color.FromRgb(255,255,0);
             Rectangle rectangle = new Rectangle { Width = 200, Height = 200, Fill = Brushes.Red,Effect= dropShadowEffect };
            rectangle.Width = 50;
            Thickness marginThickness=      new Thickness();
            marginThickness.Top = 20;
            marginThickness.Bottom = 30;
            rectangle.Margin = marginThickness;
            rectangle.Height = 50;
            currentCanvas.Children.Add(rectangle);
            user_control.Background = new SolidColorBrush(Color.FromRgb(0,255,255));
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        ///  透明度
        /// 
        public static System.Windows.Shapes.Rectangle createDropShadowRectangle(double left, double top,double width, double height, string rectSolidColor, string shadowColor,double shadowX, double shadowY, double shadowBlurRadius, double shadowAlpha)
        {
            System.Windows.Media.Effects.DropShadowEffect dropShadowEffect = new System.Windows.Media.Effects.DropShadowEffect();
            dropShadowEffect.BlurRadius = shadowBlurRadius;//    一个值,该值指示阴影的半径模糊效果。 默认值为 5。 MORE BIG MORE BLUR
            dropShadowEffect.RenderingBias = RenderingBias.Quality;
            dropShadowEffect.ShadowDepth = Math.Max(shadowX,shadowY);//     纹理下方投影的距离。 默认值为 5。
            dropShadowEffect.Opacity = shadowAlpha;
            dropShadowEffect.Color = AppUtil.parseColorWpf(shadowColor);// Color.FromRgb(255, 255, 0);
            SolidColorBrush fillColor = new SolidColorBrush(AppUtil.parseColorWpf(rectSolidColor));//Brushes.Red
            System.Windows.Shapes.Rectangle rectangle = new System.Windows.Shapes.Rectangle { Fill = fillColor, Effect = dropShadowEffect };
            System.Windows.Thickness marginThickness = new System.Windows.Thickness();
            marginThickness.Top = top;
            marginThickness.Left = left;
            rectangle.Margin = marginThickness;
            rectangle.Height = height;
            rectangle.Width = width;
            return rectangle;
            //canvas.Children.Add(rectangle);
        }

实现的效果如下

[原创]c# wpf自定义 任意颜色阴影特效融合winform的探索之路_第1张图片
image.png

这里除了红色部分,其他地方全是通过 winform实现的。

你可能感兴趣的:([原创]c# wpf自定义 任意颜色阴影特效融合winform的探索之路)