之前看到以及其它应用都有调节屏幕亮度的功能,还以为MS有相关的API,就去MSDN找了下,但是怎么都找不到。今天突然想到做自定义MessageBox时,由于要突出弹出框部分,所以会改变LayoutRoot的opacity属性,以达到屏幕暗下来的效果,于是马上试了下,结果是可行的。添加一个Slider,并将其Value熟性绑定到LayoutRoot的Opcity属性上,这样一来,在滑动Slider时,LayoutRoot的Opcaity就会改变,也就达到了我们想要的效果。代码很也简单:

<Grid x:Name="LayoutRoot" Background="Transparent" Opacity="{Binding ElementName=slider, Path=Value}" >
<Slider x:Name="slider" Height="100" Minimum="0.1"  Maximum="1" Value="1"/>

  由于之前认为这个只能改变当前的Opacity,所以又想了一个方法,利用Behavior,这个东东真是让我爱不释手啊。具体思路就是去的当前app的PhoneApplicationFrame,它也包含一个Opcity的依赖属性,所以我们可以从这一点入手。代码也很简单:

public class ChangeBrightnessBehavior : Behavior<Slider>
{
    PhoneApplicationFrame frame;
 
    protected override void OnAttached()
    {
        base.OnAttached();
        this.AssociatedObject.ValueChanged += AssociatedObject_ValueChanged;
    }
 
    void AssociatedObject_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
    {
        if (frame == null)
            frame = App.Current.RootVisual as PhoneApplicationFrame;
        frame.Opacity = e.NewValue;
    }
 
    protected override void OnDetaching()
    {
        this.AssociatedObject.ValueChanged -= AssociatedObject_ValueChanged;
        frame = null;
        base.OnDetaching();
    }
}

  使用的时候如果闲前台添加行为太麻烦,还可以使用后置代码进行添加:

  1System.Windows.Interactivity.Interaction.GetBehaviors(slider).Add(new ChangeBrightnessBehavior());

  Ps:注意引入相应的命名空间,slider的最小值设为0.1是因为当Opacity值为0时,元素是不可见的,屏幕全黑了,连slider都看不见了,UE就不好了,建议稍微设高一点。

  本文来自hamguy博客,原文地址:http://www.hamguy.info/?p=533

【转】Windows Phone 调整屏幕亮度的简单实现的更多相关文章

  1. Android 播放电影时滑动屏幕调整屏幕亮度(转)

    (转自:http://blog.csdn.net/piaozhiye/article/details/6544450) 发现有一些主流的播放器播放电影时可以通过滑动屏幕调整屏幕亮度,其实实现起来也很容 ...

  2. Mint linux中调整屏幕亮度的方法

    /*********************************************************************  * Author  : Samson  * Date   ...

  3. c# 多种方法调整屏幕亮度

    Github: https://github.com/CHNMaxGor/AjustScreenBrightness 方法一: 使用网上常说的 Gdi32.dll 下的 SetDeviceGammaR ...

  4. Unity shader学习之屏幕后期效果之调整屏幕亮度,饱和度,对比度

    Unity的屏幕后期处理效果,使用MonoBehaviour.OnRenderImage来实现. 转载请注明出处:http://www.cnblogs.com/jietian331/p/7228063 ...

  5. centos调整屏幕亮度

    笔记本安装centos6.5后亮度无法通过键盘快捷键调节,可以通过安装软件来调节. 安装:yum install xgamma 设置亮度:xgamma -gamma n( 0.1 < n < ...

  6. 解决ubuntu无法调整和保存屏幕亮度的问题

    整理自解决ubuntu无法调整和保存屏幕亮度的问题 ubuntu无法调整屏幕亮度,对笔记本来说很耗电,同时也很刺眼,因为它是默认以最大亮度来工作的. 所谓的调整,方法为下面的其中一种: 1.Fn+左右 ...

  7. 一个简单的脚本让你的ubuntu14.04记忆屏幕亮度

    小弟献丑,发个没技术含量的.本人电脑是联想y400,无论是安装32位的ubuntu还是64位的ubuntu,无论是13.04还是现在的 14.04开发者版本,都无法让我的小y实现记忆屏幕亮度这个简单的 ...

  8. iOS获取屏幕亮度及设置

    平常很少有功能点需要调整屏幕亮度,但是也会有一些特殊场景,类似支付宝微信的二维码提供扫描时会使屏幕程序高亮状态,查了下资料做了一下简单记录: 获取当前屏幕的亮度 CGFloat value = [UI ...

  9. Android开发调节屏幕亮度

    在播放器,我们经常看到这样的设计,即,在用户的特定部分将能够滑动屏幕向上或向下调整屏幕的亮度,上下滑动的某一部分将能够调整播放音量.并以滑动的进程可以进行调整,以玩. 如今,我不得不说一下亮度调节. ...

随机推荐

  1. 详谈 php定时器

    以前对se特别感兴趣,但是自己又不会java,lucene等搜索引擎开发工具,于是不断挖掘php的功效. 最后发现php也可以做抓取,并且原理很易:直接获取页面源文件,然后通过正则或字符串的参照截取来 ...

  2. iOS开发——数据持久化Swift篇&文件目录路径获取(Home目录,文档目录,缓存目录等)

    文件目录路径获取(Home目录,文档目录,缓存目录等)   iOS应用程序只能在自己的目录下进行文件的操作,不可以访问其他的存储空间,此区域被称为沙盒.下面介绍常用的程序文件夹目录:   1,Home ...

  3. 如何通过VIM把代码格式化后生成HTML网页代码

    本文转自http://wangxiaoyu.blog.51cto.com/922065/203471 需求及思路:演示需要,需要网站上嵌入一些代码,我的建议做法是根据代码文件,生成相应的HTML代码, ...

  4. 进程间通信之popen和pclose函数

    常见的操作是创建一个管道连接到另一个进程,然后读其输出或向其输入端发送数据,为此,标准I/O库提供了两个函数popen和pclose.这两个函数实现的操作是:创建一个管道,调用fork产生一个子进程, ...

  5. 构建千万级web访问架构

    . HTML静态化 其实大家都知道,效率最高.消耗最小的就是纯静态化的html页面,所以我们尽可能使我们的网站上的页面采用静态页面来实现,这个最简单的方法其实也是最有效的方法.但是对于大量内容并且频繁 ...

  6. AngularJS - contorller app module

    <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...

  7. 那些著名或非著名的iOS面试题-前编

    1.如何追踪app崩溃率,如何解决线上闪退 当iOS设备上的App应用闪退时,操作系统会生成一个crash日志,保存在设备上.crash日志上有很多有用的信息,比如每个正在执行线程的完整堆栈跟踪信息和 ...

  8. SQL把做个字段组合成一个字符串

  9. Debian 7 安装 Docker

    Debian 7更新内核到3.16后 一.添加docker源 在source.list中加入: # Docker Repo deb https://get.docker.io/ubuntu docke ...

  10. Python文件IO

    Python文件IO 有如下文本内容,文件路径为D:\temp,文件名称为lyric.txt, line1 Look ! line2 If U had one shot line3 One oppor ...