Silverlgiht:快速去除/恢复对象的颜色
某些场景下,想将一个对象快速隐藏、恢复,而且不影响布局。有一种方法:将对象的透明度在1与0之间切换。
问:为什么不用Visibility?
答:这通常会导致重新布局,即剩余可显示的控件可能会产生移动。在一些特定场景,比如报表套打中,明显不适用。
但是切换透明度的方法,有时候也不太好用,比如一个Border里再套其它控件,如果只是想快速去掉Border的边框显示,而保留Border中的控件继续呈现,就不适用了。(因为Border的透明度为0后,也会同步隐藏Border内部的控件)。
解决方法就是:修改Border边框颜色值中的A分量,让其在0与255之间切换。
private void btnTest_Click(object sender, RoutedEventArgs e) { SolidColorBrush brush = b.BorderBrush as SolidColorBrush; if (brush != null) { Color c = brush.Color; if (c.A == 0) { c.A = 0xff; //恢复颜色的Alpha分量 } else { c.A = 0x00;//去除颜色的Alpha分量 } brush.Color = c; } }
作者:菩提树下的杨过
出处:http://yjmyzz.cnblogs.com
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
出处:http://yjmyzz.cnblogs.com
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。