можно ли управлять яркостью экрана в wp7? - PullRequest
0 голосов
/ 07 декабря 2011

Как сделать экран тусклым через несколько секунд, и после нажатия он должен быть ярким. Это возможно?

Ответы [ 2 ]

1 голос
/ 07 декабря 2011

Полагаю, вы могли бы проявить творческий подход с этим - как насчет размещения частично прозрачного элемента управления (возможно, Background = "# 66000000") на весь экран, когда вы хотите затемнить его, и при нажатии на этот элемент управления он удаляется? Это дало бы вам тот эффект, который вы ищете, без необходимости углубляться во внутренние системы. Это действительно зависит от того, хотите ли вы, чтобы элементы управления на странице были доступны для взаимодействия, когда экран затемнен.

Итак, ваш Page.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, но вы не можете ничего с этим поделать, кроме явного удаления фокуса из поля ввода.

1 голос
/ 07 декабря 2011

Пока что нет способа программно контролировать яркость экрана.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...