wpf窗体设置阴影后,窗体圆角就会有阴影颜色,圆角就失效了,如何解决啊?求解

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了wpf窗体设置阴影后,窗体圆角就会有阴影颜色,圆角就失效了,如何解决啊?求解相关的知识,希望对你有一定的参考价值。

参考技术A 拜托提问也要有点精神好不,没有给出代码,很难回答你的问题。
我不知道你的窗体圆角是用什么实现的,不过我所知道的方法是把窗体设置为透明,然后在底部铺了一个Rectangle,把Rectangle设置为圆角,设置Rectangle的效果。Rectangle的Fill属性可以填为路径、图片、渐变等,这样效果就出来了。追问

这是我的阴影,但是运行起来就没有阴影了

参考技术B bitmap effect已经被淘汰了,用effect追问

嗯,好的,谢谢,我弄出来了

本回答被提问者采纳
参考技术C 重新更改追问

我是wpf初学者,您详细说一下可以吗?怎么重新更改,而且在设计里看着有阴影,但是运行起来就没有了。

设置view的圆角和阴影

1.设置view圆角

self.backView.clipsToBounds = YES;
self.backView.layer.cornerRadius = 6.f;

2.设置view阴影

    self.backView.layer.shadowColor = [UIColor blackColor].CGColor;//shadowColor阴影颜色
    self.backView.layer.shadowOffset = CGSizeMake(6,6);//shadowOffset阴影偏移,x向右偏移4,y向下偏移4,默认(0, -3),这个跟shadowRadius配合使用
    self.backView.layer.shadowOpacity = 0.5;//阴影透明度,默认0
    self.backView.layer.shadowRadius = 4;//阴影半径,默认3

  通过上面的方式设置阴影,必须把clipsToBounds关闭.

3.同时设置view的圆角和阴影

  如果上面的方法一起用,把masksToBounds开了,阴影无法显示,关了的话其上的View又会遮住圆角。解决的方式只能是再加一层layer。

    self.backView.backgroundColor = [UIColor whiteColor];
    self.backView.clipsToBounds = YES;
    self.backView.layer.cornerRadius = 6.f;
    //阴影效果
    CALayer *subLayer=[CALayer layer];
    CGRect fixframe=self.backView.layer.frame;
    fixframe.size.width=[UIScreen mainScreen].bounds.size.width-40;
    subLayer.frame=fixframe;
    subLayer.cornerRadius=6.f;
    subLayer.masksToBounds=NO;
    subLayer.shadowColor=[UIColor blackColor].CGColor;
    subLayer.shadowOffset=CGSizeMake(4,4);
    subLayer.shadowOpacity=0.8f;
    subLayer.shadowRadius=6.f;
    [self.backView.layer insertSublayer:subLayer below:self.backView.layer];

 

以上是关于wpf窗体设置阴影后,窗体圆角就会有阴影颜色,圆角就失效了,如何解决啊?求解的主要内容,如果未能解决你的问题,请参考以下文章

android 圆角边框 阴影边框怎么设置

wpf窗体阴影

WPF 窗体阴影效果!!!

设置view的圆角和阴影

阴影系列:YcCardView实现不同颜色的阴影(带圆角)

wpf使用mahapps.metro后为啥窗体没有了阴影