我们可以在wp7中控制屏幕的亮度吗?

本文关键字:屏幕 亮度 控制屏 控制 wp7 我们 | 更新日期: 2023-09-27 18:16:56

如何让屏幕在几秒钟后变暗,而在点击后应该是亮的。

我们可以在wp7中控制屏幕的亮度吗?

目前还没有办法通过编程来控制屏幕的亮度。

我猜你可以用它来发挥创意——当你想让它变暗时,在整个屏幕上设置一个部分透明的控件(也许Background="#66000000"),然后点击该控件,它就会被删除。这样就能达到你想要的效果而不需要进入系统内部。这实际上取决于你是否希望在屏幕变暗时,页面上的控件可以用于交互。

所以你的页面。Xaml应该是这样的…

<phone:PhoneApplicationPage 
x:Class="ScreenDimmer.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d" d:DesignWidth="480" d:DesignHeight="768"
FontFamily="{StaticResource PhoneFontFamilyNormal}"
FontSize="{StaticResource PhoneFontSizeNormal}"
Foreground="{StaticResource PhoneForegroundBrush}"
SupportedOrientations="Portrait" Orientation="Portrait"
shell:SystemTray.IsVisible="True">
    <!--LayoutRoot is the root grid where all page content is placed-->
    <Grid x:Name="LayoutRoot" Background="Transparent">
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="*"/>
        </Grid.RowDefinitions>
        <!--TitlePanel contains the name of the application and page title-->
        <StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28">
            <TextBlock x:Name="ApplicationTitle" Text="MY APPLICATION" Style="   {StaticResource PhoneTextNormalStyle}"/>
            <TextBlock x:Name="PageTitle" Text="page name" Margin="9,-7,0,0" Style=" {StaticResource PhoneTextTitle1Style}"/>
        </StackPanel>
        <!--ContentPanel - place additional content here-->
        <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
            <StackPanel Name="ControlStacker">
                <TextBlock Text="My input 1" />
                <TextBox Name="Input1Value" TextChanged="Input1Value_TextChanged" />
                <TextBlock Text="My input 2" />
                <TextBox Name="Input2Value" TextChanged="Input1Value_TextChanged"  />
                <TextBlock Text="My input 3" />
                <TextBox Name="Input3Value" TextChanged="Input1Value_TextChanged"  />
            </StackPanel>
        </Grid>
        <Canvas Grid.RowSpan="2" Margin="0" Height="800" Width="480"  Background="#66000000" Name="DimmerControl" MouseLeftButtonUp="DimmerControl_MouseLeftButtonUp" Visibility="Collapsed" />
    </Grid>
</phone:PhoneApplicationPage>

在你的代码后面,像这样的…

public partial class MainPage : PhoneApplicationPage
{
    DispatcherTimer dimmerTimer;
    // Constructor
    public MainPage()
    {
        InitializeComponent();
        dimmerTimer = new DispatcherTimer();
        dimmerTimer.Tick += dimmerTimer_Tick;
        dimmerTimer.Interval = TimeSpan.FromSeconds(5);
        dimmerTimer.Start();
    }
    void dimmerTimer_Tick(object sender, EventArgs e)
    {
        DimDisplay();
    }
    void DimDisplay()
    {
        DimmerControl.Visibility = System.Windows.Visibility.Visible;
    }
    void UndimDisplay()
    {
        DimmerControl.Visibility = System.Windows.Visibility.Collapsed;
    }
    private void DimmerControl_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
    {
        UndimDisplay();
    }
    private void Input1Value_TextChanged(object sender, TextChangedEventArgs e)
    {
        UndimDisplay();
        dimmerTimer.Stop();
        dimmerTimer.Start();
    }
}

注意:这是一个非常简单的概念证明,当你做任何事情时,除了改变文本框的值,它不处理重置消光定时器,但它会给你一个想法。它也不能处理SIP调光,但是除了显式地从输入框中移除焦点之外,您也没有太多可以做的。