Creare un screen saver con .Net (VB.Net - C#)

In questo articolo, vedremo come creare un salva schermo con la tecnologia .Net.

il
Sviluppatore Microsoft .Net, Collaboratore di IProgrammatori

Introduzione

Figura 1

In questo articolo vedremo come creare un salva schermo, per il nostro computer, in particolare si crea un screen saver, il quale visualizza un immagine (una schacchiera) che verrà visualizzata in diverse parti dello schermo, ogni n secondi.
Il salva shermo è una funzionalità di Windows, che permette, se attività, che dopo n minuti di visualizzare delle animazioni quando il pc è inattivo.
I file Screen Saver, hanno come estensione .scr e si trovano nella cartella C:\WINDOWS\system32, in questo modo comparirà nella lista dei screnne Saver, della finestra proprietà.

Inoltre il nostro Salva Schermo farà uso di una finestra delle opzioni, per impostare alcuni parametri, tra i quali, avremo la possibilità di impostare la velocità per il cambiamento della posizione, impostare un immagine e il colore di sfondo.

Creazione della classe Opzioni

Si apra Visual Studio 2005 e si crea un nuovo progetto di tipo Windows Application, scelto il linguaggio di proprio interesse (VB.Net o C#) verrà creato un nuovo progetto, con una form.

Si aggiunge al progetto una classe, tale classe ha il compito di gestire le informazioni riguardante il salva schermo, le opzioni che si potranno modificare nella finestra delle proprietà dello schermo, in particolare nel tab screen saver.

La classe sarà di tipo serializer, in questo modo si possono gestire le impostazioni tramite un file in modalità XML.

La classe avrà tre proprietà di tipo testo, una per la gestione del percorso e nome del file immagine, una per il colore dello sfondo della form e l’latra per la gestione della velocità del cambiamento della posizione dell’immagine.

 

VB.Net
Imports System.Xml.Serialization
Imports System.Xml
Imports System.IO
''' <summary>
''' Classe serializzata
''' </summary>
''' <remarks></remarks>
<Serializable()> Public Class Opzioni
 
#Region "Campi"
    Private m_Velocita As String = "Media" 'Alta - Media - Bassa
    Private m_Sfondo As String = "Blue" 'Colore sfondo
    Private m_FileImmagine As String = Environment.CurrentDirectory & "\sfondo.jpg"
    Private PercorsoOpzioni As String = Environment.CurrentDirectory & "\SalvaSchermoOpzioni.opt"
 
#End Region
 
#Region "Proprietà"
    ''' <summary>
    ''' Proprietà per la gestione delle velocità di esecuzione dello spostamento nello schermo
    ''' </summary>
    ''' <value></value>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Property Velocita() As String
        Get
            Return m_Velocita
        End Get
        Set(ByVal value As String)
            m_Velocita = value
        End Set
    End Property
    ''' <summary>
    ''' Colore di sfondo
    ''' </summary>
    ''' <value></value>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Property Colore_Sfondo() As String
        Get
            Return m_Sfondo
        End Get
        Set(ByVal value As String)
            m_Sfondo = value
        End Set
    End Property
    ''' <summary>
    ''' Percorso e nome del file immagine che verrà visualizzato
    ''' </summary>
    ''' <value></value>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Property Immagine() As String
        Get
            Return m_FileImmagine
        End Get
        Set(ByVal value As String)
            m_FileImmagine = value
        End Set
    End Property
 
#End Region
 
#Region "Funzioni"
    Public Function FileOpzioniEsistente() As Boolean
        Dim fileOpz As New System.IO.FileInfo(PercorsoOpzioni)
        Return fileOpz.Exists()
    End Function
    Public Sub CaricaOpzioni()
        Dim MyOpzioni As New Opzioni()
 
        ' Verifico che il file esista
        If MyOpzioni.FileOpzioniEsistente() Then
 
 
 
            ' Oggetto di tipo serializzato
            Dim mySerializer As New XmlSerializer(GetType(Opzioni))
            ' Leggo il file xml .opt
            Dim TextReader As New StreamReader(PercorsoOpzioni)
            ' Oggetto xml per la lettura delle opzoni
            Dim XmlReader As New Xml.XmlTextReader(TextReader)
 
            ' Verifico che il formato è conforme
            If mySerializer.CanDeserialize(XmlReader) Then
                ' Deserializzo oggetto
                MyOpzioni = CType(mySerializer.Deserialize(XmlReader), Opzioni)
            Else
                ' Salvo il file opzioni
                MyOpzioni.SalvaOpzioni()
            End If
 
            ' Chiudo gli oggetti.
            XmlReader.Close()
            TextReader.Close()
 
            ' Imposto i vari valori
            Me.Velocita = MyOpzioni.Velocita
            Me.Colore_Sfondo = MyOpzioni.Colore_Sfondo
            Me.Immagine = MyOpzioni.Immagine
        End If
    End Sub
 
 
    Public Sub SalvaOpzioni()
        ' oggetto per la scrittura dei dati
        Dim myWriter As New System.IO.StreamWriter(PercorsoOpzioni)
 
        'oggetto serializzato
        Dim myXmlSerializer As New XmlSerializer(Me.GetType())
 
        'Serializzo l'oggetto
        myXmlSerializer.Serialize(myWriter, Me)
 
 
        myWriter.Close()
 
 
    End Sub
#End Region
 
 
End Class
 
C#
 
using System;
using System.Collections.Generic;
using System.Text;
using System.Xml.Serialization;
using System.Xml;
using System.IO;
 
namespace WinSalvaSchermoCS
{
    [Serializable]
    public class Opzioni
    {
 
 
        #region Campi
        private string m_Velocita = "MEDIA"; // Alta - Media - Bassa
        private string m_Sfondo = "BLUE"; //Colore sfondo
        private string m_FileImmagine = Environment.CurrentDirectory + "\\sfondo.jpg";
        private string PercorsoOpzioni = Environment.CurrentDirectory + "\\SalvaSchermoOpzioni.opt";
 
        #endregion
 
 
        #region Proprietà
        public string Immagine
        {
            get { return m_FileImmagine; }
            set { m_FileImmagine = value; }
        }
        public string Colore_Sfondo
        {
            get { return m_Sfondo; }
            set { m_Sfondo = value; }
        }
        public string Velocita
        {
            get { return m_Velocita; }
            set { m_Velocita = value; }
        }
        #endregion
 
 
        #region Funzioni
        public bool FileOpzioniEsistente()
         {
        
          FileInfo fileOpz = new FileInfo(PercorsoOpzioni);
          return fileOpz.Exists ;
         }
 
 
 
        public void CaricaOpzioni()
        {
            Opzioni MyOpzioni = new Opzioni();
 
 
            // Verifico che il file esista
            if (MyOpzioni.FileOpzioniEsistente())
            {
 
 
 
                //Oggetto di tipo serializzato
                XmlSerializer mySerializer = new XmlSerializer( typeof(WinSalvaSchermoCS.Opzioni));
                // Leggo il file xml .opt
                StreamReader TextReader = new StreamReader(PercorsoOpzioni);
                // Oggetto xml per la lettura delle opzoni
                System.Xml.XmlTextReader XmlReader = new System.Xml.XmlTextReader(TextReader);
 
                // Verifico che il formato è conforme
                if (mySerializer.CanDeserialize(XmlReader))
                {// Deserializzo oggetto
                    MyOpzioni = (Opzioni)(mySerializer.Deserialize(XmlReader));
                }
                else
                {
                    // Salvo il file opzioni
                    MyOpzioni.SalvaOpzioni();
                }
 
 
 
                // Chiudo gli oggetti.
                XmlReader.Close();
                TextReader.Close();
 
                // Imposto i vari valori
                this.Velocita = MyOpzioni.Velocita;
                 this.Colore_Sfondo = MyOpzioni.Colore_Sfondo;
                this.Immagine = MyOpzioni.Immagine;
            }
        }
 
 
        public void SalvaOpzioni()
        {
 
            // oggetto per la scrittura dei dati
            StreamWriter myWriter = new StreamWriter(PercorsoOpzioni);
 
            //oggetto serializzato
            XmlSerializer myXmlSerializer = new XmlSerializer(this.GetType());
 
            //Serializzo l'oggetto
            myXmlSerializer.Serialize(myWriter, this);
 
            myWriter.Close();
 
        }
 
 
 
 
        #endregion
 
 
 
 
 
    }
}

 

 

Creazione della finestra opzioni
Dopo aver creato la classe che permette la gestione delle opzioni, non ci resta che creare una finestra, nella quale sarà possibile impostare i parametri del nostro salva schermo.
La finestra è composta da una casella combinata per impostare la velocità dello spostamento dell’immagine nello schermo, un controllo di tipo option button per impostare  il colore di sfondo (rosso, verde e blu) una casella di testo ed un pulsante per la selezione dell’immagine, ed un controllo pciturebox, che avrà il compito di visualizzare l’anteprima dell’immagine.
Nella figura 2 è mostrata l’impostazione di tale finestra.

 

 

Figura2
 
Il pulsante annulla, avrà il compito di chiudere la finestra.
Di seguito si riporta il frammento di codice di tale pulsante 

 

VB.Net
Me.Close()
C#
this.Close();

 

 

Nell’evento load della form, verranno caricati i dati salvati in precedenza.
Tramite il metodo caricaopzioni, della classe opzioni, verrà valorizzato l’oggetto opzioni, con i dati rilevati dal file di configurazione.
Dopo tale operazione, verranno valorizzati i vari controlli posti sulla form.
Di seguito si riporta il frammento di codice da inserire nell’evento load.

 

VB.Net
'Carico i dati
        Dim fileOpzioni As New Opzioni()
        fileOpzioni.CaricaOpzioni()
        'imposto il colore
        Select Case fileOpzioni.Colore_Sfondo.ToUpper()
            Case "BLU"
                rdbBlu.Checked = True
            Case "VERDE"
                RdbVerde.Checked = True
 
            Case "ROSSO"
                rdbRosso.Checked = True
 
        End Select
        'Imposto la velocità
        cmbVelocita.Text = fileOpzioni.Velocita
        'Percorso foto
        txtNomeFile.Text = fileOpzioni.Immagine
        If fileOpzioni.Immagine.Trim() <> "" Then
            PictureBox1.ImageLocation = fileOpzioni.Immagine
        End If
C#
//Carico i dati
            Opzioni fileOpzioni = new Opzioni();
            fileOpzioni.CaricaOpzioni();
            //imposto il colore
            switch (fileOpzioni.Colore_Sfondo.ToUpper())
            {
                case "BLU":
                    rdbBlu.Checked = true;
                    break;
                case "VERDE":
                    RdbVerde.Checked = true;
                    break;
                case "ROSSO":
                    rdbRosso.Checked = true;
                    break;
            }
            //Imposto la velocità
            cmbVelocita.Text = fileOpzioni.Velocita;
            //Percorso foto
            txtNomeFile.Text = fileOpzioni.Immagine;
            if (fileOpzioni.Immagine.Trim() != "")
                PictureBox1.ImageLocation = fileOpzioni.Immagine;

 

 
Il pulsante con il testo dei tre puntini “…” permette di visualizzare una finestra di dialogo per la selezione dell’immagine (jpg o gif).
Impostando la proprietà RestoreDirectory a true permetterà di mantenere le informazioni rilevate, in questo modo, quando andremo a salvare il file di configurazione, le modifiche verranno apportate altrimenti, se impostato a false, nessuna modifica verrà effettuata.
Dopo aver selezionato il file immagine, verrà riportato nella casella di testo il percorso e nome del file immagine, mentre nel controllo picturebox verrà visualizzata l’immagine.
Di seguito si riporta il frammento di codice delle suddette operazioni.

 

 VB.Net

'Carico nella casella di testo il nome ed il percorso del file
         Dim dlgFile As New OpenFileDialog()
        dlgFile.Filter = "*.Jpg|*.Jpg|*.gif|*.gif|*.bmp|*.bmp"
        dlgFile.Title = "Selezionare il file immagine che si vuole impostare come immagine di salvaschermo"
        dlgFile.RestoreDirectory = True
        If dlgFile.ShowDialog() = Windows.Forms.DialogResult.OK Then
            txtNomeFile.Text = dlgFile.FileName
            PictureBox1.ImageLocation = txtNomeFile.Text
        End If
 
C#
//Carico nella casella di testo il nome ed il percorso del file
            OpenFileDialog dlgFile = new OpenFileDialog();
            dlgFile.Filter = "*.Jpg|*.Jpg|*.gif|*.gif|*.bmp|*.bmp";
            dlgFile.Title = "Selezionare il file immagine che si vuole impostare come immagine di salvaschermo";
            dlgFile.RestoreDirectory = true;
            if (dlgFile.ShowDialog() == DialogResult.OK)
            {
                txtNomeFile.Text = dlgFile.FileName;
                PictureBox1.ImageLocation = txtNomeFile.Text;
            }

 Per concludere le operazioni su questa form(opzioni), non ci resta che scrivere il codice per il pulsante ok, il quale dovrà salvare le impostazioni per il nostro salva schermo. Tramite il metodo SalvaOpzioni, salveremo i valori impostati nelle varie proprietà (colore_sfondo, velocità ed immagine) nel file di configurazione.

Il codice dev’essere simile a quello riportato qui di seguito.

 

 VB.Net

Dim FileOpzioni As New Opzioni()
        If rdbBlu.Checked = True Then
            FileOpzioni.Colore_Sfondo = "BLU"
        ElseIf RdbVerde.Checked = True Then
            FileOpzioni.Colore_Sfondo = "VERDE"
        Else
            FileOpzioni.Colore_Sfondo = "ROSSO"
        End If
        PictureBox1.ImageLocation = ""
        FileOpzioni.Velocita = cmbVelocita.Text
        FileOpzioni.Immagine = txtNomeFile.Text
        FileOpzioni.SalvaOpzioni()
        Me.Close()
C#
 
Opzioni FileOpzioni = new Opzioni();
            if (rdbBlu.Checked == true)
                FileOpzioni.Colore_Sfondo = "Blu";
            else if (RdbVerde.Checked == true)
                FileOpzioni.Colore_Sfondo = "Verde";
            else
                FileOpzioni.Colore_Sfondo = "Rosso";
            PictureBox1.ImageLocation = "";
            FileOpzioni.Velocita = cmbVelocita.Text;
            FileOpzioni.Immagine = txtNomeFile.Text;
            FileOpzioni.SalvaOpzioni();
            this.Close();

 Creazione della finestra Screen Saver

A questo punto non ci resta che scrivere la finestra per il nostro screen saver. La form, del salvaschermo, avrà impostato la proprietà FormBorderStyle in none, mentre la proprietà TopMost sarà impostato a true, e la proprietà WindowState a maximized.
Fatto ciò inseriamo nella form un controllo picturebox, il quale visualizza la nostra immagine, rilevandola nel nostro file di opzioni, ed un controllo per la gestione del tempo, ossia un timer.
Dichiariamo a livello di form le variabili per la gestione della grafica, per il posizionamento del controllo picturebox e per la gestione del mouse.
Di seguito si riporta la dichiarazone di tali campi. 
VB.Net
' oggetto per la grafica
    Private m_Graphics As Graphics
    'Oggetto per le opzioni
    Private m_Opzioni As New Opzioni()
    ' per la prima impostazione
    Private m_Attivo As Boolean = False
    'verifico lo spostamento del mouse
    Private m_MousePosizione As Point
    'oggetto per cambiare di volta in volta le coordinate
    Private m_Random As New Random()
 
 
C#
// oggetto per la grafica
        private Graphics m_Graphics;
        //Oggetto per le opzioni
        private Opzioni m_Opzioni = new Opzioni();
        // per la prima impostazione quando si avvia lo screnn saver
        private bool m_Attivo = false;
        // verifico lo spostamento del mouse
        private Point m_MousePosizione;
        //oggetto per cambiare di volta in volta le coordinate
        private Random m_Random = new Random();

 

 
Il nostro programma, sarà avviato tramite un opportuno metodo, questa funzione denominata main, avrà il compito di accettare un argomento, in base al parametro passato, verrà visualizzata o la finestra del salva schermo oppure quelle delle opzioni.
Infatti la finestra delle proprietà dello schermo di Windows, per avviare un salvaschermo, passa degli argomenti, la c sta per opzioni, mentre la s sta per salva schermo, mentre la p, permette l'anteprima del salva schermo.
Di seguito si riporta il frammento di codice di tale operazioni.

 VB.Net

' Programma di avvio - startup del progetto
    <STAThread()> Shared Sub Main(ByVal args As String())
 
        ' Verifico l'argomento che viene passato /c = opzioni /s screnn saver /p da anteprima
        If args.Length > 0 Then
            'Anteprima
            If args(0).ToLower = "/p" Then
                ' da personalizzare anteprima quando viene selezionato dalla finestra screnne saver il nome.
 
 
               
                Application.Exit()
            End If
 
            'finestra delle opzioni
            If args(0).ToLower.Trim().Substring(0, 2) = "/c" Then
                Dim FrmOpzioni As New FrmOpzioni()
                FrmOpzioni.ShowDialog()
 
 
                Application.Exit()
            End If
 
            ' avvio lo screen saver
            If args(0).ToLower = "/s" Then
 
                Dim ScreenForm As New Form1()
                ScreenForm.ShowDialog()
                Application.Exit()
            End If
 
 
        Else
            'in caso di   doppio click
            Dim ScreenForm As New Form1()
            ScreenForm.ShowDialog()
 
 
            Application.Exit()
        End If
    End Sub
C#
   [STAThread]
        static void Main(string[] args)
        {
 
            // Verifico l'argomento che viene passato /c = opzioni /s screnn saver /p da anteprima
            if (args.Length > 0)
            {
                //Anteprima
                if (args[0].ToLower() == "/p")
                {
                    // da personalizzare anteprima quando viene selezionato dalla finestra screnne saver il nome.
 
 
 
                    Application.Exit();
                }
                //finestra delle opzioni
                if (args[0].ToLower().Trim().Substring(0, 2) == "/c")
                {
                    FrmOpzioni FrmOpzioni = new FrmOpzioni();
                    FrmOpzioni.ShowDialog();
 
 
                    Application.Exit();
                }
 
                // avvio lo screen saver
                if (args[0].ToLower() == "/s")
                {
 
                    Form1 ScreenForm = new Form1();
                    ScreenForm.ShowDialog();
                    Application.Exit();
                }
 
            }
            else
            {
                //in caso di   doppio click
                Form1 ScreenForm = new Form1();
                ScreenForm.ShowDialog();
 
                Application.Exit();
            }
 
        }

 

Nell’evento load della finestra per visualizzare il screen saver, verrà creato un oggetto di tipo opzioni, che tramite il metodo carica dati, imposta la form con i parametri impostati. Verrà impostato la velocità di spostamento dell’immagine, l’immagine da visualizzare ed il colore dello sfondo della form.
Inoltre verrà avviato il timer.
Di seguito si riporta il codice delle suddette operazoni.

 

VB.Net
'oggetto per la creazione grafica
        Me.m_Graphics = Me.CreateGraphics()
 
        'rilevo le opzioni
        m_Opzioni.CaricaOpzioni()
        PictureBox1.ImageLocation = m_Opzioni.Immagine
 
        'imposto il tempo
        Select Case m_Opzioni.Velocita.ToUpper()
            Case "VELOCE"
                tmrAggiornamento.Interval = 1000
            Case "MEDIA"
                tmrAggiornamento.Interval = 500
            Case "LENTA"
                tmrAggiornamento.Interval = 200
        End Select
        'rilevo il colore di sfondo
        Select Case m_Opzioni.Colore_Sfondo.ToUpper()
            Case "BLU"
                Me.BackColor = Color.Blue
            Case "VERDE"
                Me.BackColor = Color.Green
            Case "ROSSO"
                Me.BackColor = Color.Red
        End Select
 
        'Abilito il timer
        tmrAggiornamento.Enabled = True
C#
  //oggetto per la creazione grafica
            this.m_Graphics = this.CreateGraphics();
 
            //rilevo le opzioni
            m_Opzioni.CaricaOpzioni();
            PictureBox1.ImageLocation = m_Opzioni.Immagine;
 
            //imposto il tempo
            switch (m_Opzioni.Velocita.ToUpper())
            {
                case "VELOCE":
                    tmrAggiornamento.Interval = 1000;
                    break;
                case "MEDIA":
                    tmrAggiornamento.Interval = 500;
                    break;
                case "LENTA":
                    tmrAggiornamento.Interval = 200;
                    break;
            }
            //rilevo il colore di sfondo
            switch (m_Opzioni.Colore_Sfondo.ToUpper())
            {
                case "BLU":
                    this.BackColor = Color.Blue;
                    break;
                case "VERDE":
                    this.BackColor = Color.Green;
                    break;
                case "ROSSO":
                    this.BackColor = Color.Red;
                    break;
            }
            //Abilito il timer
            tmrAggiornamento.Enabled = true;

 

 

Nell’evento tick del controllo timer verrà richiamata la funzione Visualizzare, che avrà il compito di visualizzare l'immagine, con le impostazioni effettuate.

Di seguito si riporta il codice dell’evento tick del controllo timer.

 

VB.Net
Private Sub tmrAggiornamento_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tmrAggiornamento.Tick
        Visualizza()
    End Sub
 
C#
private void tmrAggiornamento_Tick(object sender, EventArgs e)
        {
            Visualizza();
        }
 
Quando si sposta il mouse oppure si digita un suo pulsante, occorre chiudere il nostro applicativo, tramite gli eventi mousemove e mouse down della nostra form, possiamo controllare tale situazione per chiudere il programma.
Di seguito si riporta il frammento di codice per l’evento mousemove

  

VB.Net
Private Sub Form1_MouseMove(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseMove
        If Not m_Attivo Then
            Me.m_MousePosizione = New Point(e.X, e.Y)
            m_Attivo = True
        Else
            If Math.Abs(e.X - Me.m_MousePosizione.X) > 10 Or _
               Math.Abs(e.Y - Me.m_MousePosizione.Y) > 10 Then
                'Esco dal programma
                Application.Exit()
            End If
        End If
    End Sub
C#
private void Form1_MouseMove(object sender, MouseEventArgs e)
        {
            if (!m_Attivo)
            {
                this.m_MousePosizione = new Point(e.X, e.Y);
                m_Attivo = true;
            }
            else
            {
                if (Math.Abs(e.X - this.m_MousePosizione.X) > 10 && Math.Abs(e.Y - this.m_MousePosizione.Y) > 10)
                {
                    //Esco dal programma
                    Application.Exit();
                }
            }
        }

Mentre qui di seguito si riporta il frammento di codice per l’evento MouseDown

VB.Net

Private Sub Form1_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseDown
        Application.Exit()
    End Sub
 
C#
private void Form1_MouseDown(object sender, MouseEventArgs e)
        {
            Application.Exit();
        }

 

 

La funzione visualizza, avrà il compito di impostare le coordinate, o meglio la posizione della picturebox in varie parti dello schermo. Tramite la classe random, impostiamo un numero causale relativo alle coordinate.

Di seguito si riporta lo script per la funzione Visualizza.

VB.Net

Private Sub Visualizza()
        ' Dimensione della form
        Dim maxX As Integer = Me.Width
        Dim maxY As Integer = Me.Height
        ' Coordinate random dinamiche
        Dim x1, x2, y1, y2 As Integer
 
 
        'Genero il numero delle coordinate
        x1 = m_Random.Next(0, maxX)
        x2 = m_Random.Next(0, maxX)
 
        y1 = m_Random.Next(0, maxY)
        y2 = m_Random.Next(0, maxY)
 
       
 
        'imposto le coordinate
        If y1 < 500 Then y1 = 400
        PictureBox1.Top = y1 - PictureBox1.Height
        If x1 < 400 Then x1 = 400
        PictureBox1.Left = x1 - PictureBox1.Width
        
    End Sub
C#
private void Visualizza()
        {
            //Dimensione della form
            Int32 maxX = this.Width;
            Int32 maxY = this.Height;
            // Coordinate random dinamiche
            Int32 x1, x2, y1, y2;
 
 
            //Genero il numero delle coordinate
            x1 = m_Random.Next(0, maxX);
            x2 = m_Random.Next(0, maxX);
 
            y1 = m_Random.Next(0, maxY);
            y2 = m_Random.Next(0, maxY);
 
 
 
            //imposto le coordinate
            if (y1 < 500)
                y1 = 400;
            PictureBox1.Top = y1 - PictureBox1.Height;
            if (x1 < 400)
                x1 = 400;
            PictureBox1.Left = x1 - PictureBox1.Width;
 
        }

 

 

Impostazioni e test del nostro salva schermo.
A questo punto non ci resta che testare il nostro salva schermo, compiliamo in modalità realese, se volete fare il debug, lasciate modalità debug.
Nelle proprietà del progetto, impostate il progetto di avvio, con il metodo main. Inoltre per il linguaggio VB.Net, impostate per la scheda “compile” compilazione, La voce implicit conversion e late binding call could fail at run time a none.
Mentre nella finestra assembly information (tramite il pulsante con la scritta "Assembly Information") spuntate il checkbox quello relativo a make assembly com-visible.
Dopo aver compilato il progetto, rinominate il file exe in .scr e copiatelo nella cartella C:\WINDOWS\system32 (qualora il sistema operativo è installato in tale unità).
Aprire la finestra delle proprietà dello schermo, nel tab Screen Saver, selezionate dall’elenco dei salva schermo, il vostro salva schermo appena creato, digitate il pulsante prova, per verificare le corrette impostazioni.

 

Conclusioni:
In questo articolo si è visto come creare un semplice salva schermo, che visualizza un immagine in diverse posizione dello schermo.  Questo articolo ha fornito al lettore le basi per la creazione di un salva schermo, naturalmente si può ampliare, migliorare con effetti avanzati.
Tramite la parola download è possibile scaricare il file di esempio utilizzato in questo articolo.

 

Download