FullScreen

Date: martedì giugno 3, 2008
Posted in: Tutorials

Per alcune tipologie di applicazioni, la possibilità di poter essere eseguite in modalità fullscreen è molto importante, pensiamo ad esempio ad player di video (magari sfruttando il support al VC-1, la codifica per l’alta definizione) oppure una galleria fotografica.

In questo post vedremo come realizzare un pulsante che porti la nostra applicazione in modalità fullscreen.

L’oggetto a cui faremo riferimento è Application.Current.Host.Content
Questo oggetto ha due proprietà che possono essere lette in qualsiasi momento e sono

La terza proprietà rilevante per il nostro scopo è la IsFullScreen, quest’ultima è di tipo bool e può essere letta in qualsiasi momento ma può essere impostata soltanto dentro un evento di tipo:

  1. MouseLeftButtonDown
  2. MouseLeftButtonUp
  3. KeyDown
  4. KeyUp

Quindi se noi dentro il nostro metodo public Page() impostassimo la proprietà

 Application.Current.Host.Content.IsFullScreen = true;

per far si che la nostra applicazione vada subito in modalità fullscreen all’avvio, ebbene non succederebbe nulla.

Questa limitazione è stata voluta da Microsoft per impedire che applicazioni Silverlight possano passare alla modalità fullscreen senza nessun intervento da parte dell’utente finale.

Per verificare il funzionamento di quanto descritto creiamo un progetto di test con VisualStudio2008, il file Page.xaml sarà il seguente:

<UserControl x:Class="FullScreenTestSL.Page"
    xmlns="http://schemas.microsoft.com/client/2007" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Width="Auto" Height="Auto">
    <Grid x:Name="LayoutRoot" Background="White">
		<StackPanel>
			<TextBox x:Name="txtb1" Width="300" Height="30" Text=""></TextBox>
			<Button x:Name="btn1" Width="50" Height="30" MouseLeftButtonUp="btn1_MouseLeftButtonUp"></Button>
		</StackPanel>
	</Grid>
</UserControl>

Mentre il file Page.xaml.cs sarà:

?View Code CSHARP
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
 
namespace FullScreenTestSL
{
    public partial class Page : UserControl
    {
        public Page()
        {
            InitializeComponent();
            Application.Current.Host.Content.FullScreenChanged += new EventHandler(Content_FullScreenChanged);
 
            layoutUpdated(Application.Current.Host.Content.ActualHeight, Application.Current.Host.Content.ActualWidth);
        }
 
        void Content_FullScreenChanged(object sender, EventArgs e)
        {
            layoutUpdated(Application.Current.Host.Content.ActualHeight, Application.Current.Host.Content.ActualWidth);
        }
 
        private void btn1_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
        {
            Application.Current.Host.Content.IsFullScreen = !Application.Current.Host.Content.IsFullScreen;           
        }
 
        private void layoutUpdated(double height, double widht)
        {
            txtb1.Text = "Cur Height:" + height.ToString() + " Widht: " + widht.ToString();
        }
    }
}

Abbiamo associato all’evento MouseLeftButtonUp (che è uno degli eventi che sono abilitati a gestire la modalità fullscreen) il codice che modifica la proprietà IsFullScreen, in questo caso viene dato un effetto switch fullscreen/normalscreen alla pressione del pulsante.

Condividi : Queste icone linkano i siti di social bookmarking sui quali i lettori possono condividere e trovare nuove pagine web.
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google


1 Comment

RSS feed | Trackback URI

P.S.
Attualmente il Browser Mozilla Firefox 2.x non permette al plugin Silverlight 2.0 Beta di passare alla modalità fullscreen, effettuate quindi i vostri test su un browser come Explorer.

Comment by Mino on giugno 3rd, 2008 @ 16:36

A capo e separazione tra i paragrafi automatici, l’indirizzo e-mail non è mai mostrato, codice HTML consentito: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

You must be logged in to post a comment.