Fonction partagée privée SetCursorPos (ByVal X comme entier, ByVal Y comme entier) comme booléen 
 Fonction de fin 
 
 
 Cercles privés comme nouvelle liste (de rectangle) 
 Rnd privé comme nouveau aléatoire () 
 
 Le sous-privé MyScreensaver_Load (expéditeur en tant qu'objet, et en tant qu'EventArgs) gère MyBase.Load 
 ' Définir la couleur d'arrière-plan 
 Me.BackColor =Couleur.Noir 
 
 ' Définir les propriétés du formulaire pour le plein écran 
 Me.FormBorderStyle =FormBorderStyle.None 
 Moi.TopMost =Vrai 
 Me.WindowState =FormState.Maximized 
 
 'Démarrer le minuteur pour l'animation 
 Minuterie1.Démarrer() 
 Fin du sous-marin 
 
 
 Le sous-privé Timer1_Tick (expéditeur en tant qu'objet, et en tant qu'EventArgs) gère Timer1.Tick 
 'Invalider pour déclencher l'événement Paint 
 Moi.Invalider() 
 Fin du sous-marin 
 
 
 Le sous-privé MyScreensaver_Paint (expéditeur en tant qu'objet, et en tant que PaintEventArgs) gère MyBase.Paint 
 'Effacer les cercles existants 
 cercles.Clear() 
 
 'Créer de nouveaux cercles aléatoires 
 Pour i As Integer =0 To 10 ' Ajustez le nombre de cercles ici 
 Dim size As Integer =rnd.Next(20, 80) 'Ajuster la plage de taille du cercle 
 Dim x As Integer =rnd.Next(0, Me.Width - taille) 
 Dim y As Integer =rnd.Next(0, Me.Height - taille) 
 circles.Add (Nouveau rectangle (x, y, taille, taille)) 
 Suivant 
 
 'Dessiner des cercles 
 Utilisation de g comme graphiques =e.Graphics 
 g.SmoothingMode =SmoothingMode.AntiAlias 
 Pour chaque rect comme rectangle en cercles 
 Utilisation du pinceau As SolidBrush =New SolidBrush(Color.FromArgb(rnd.Next(256), rnd.Next(256), rnd.Next(256))) 'Couleur aléatoire 
 g.FillEllipse (pinceau, rect) 
 Fin de l'utilisation 
 Suivant 
 Fin de l'utilisation 
 Fin du sous-marin 
 
 Le sous-privé MyScreensaver_MouseMove (expéditeur en tant qu'objet, et en tant que MouseEventArgs) gère MyBase.MouseMove 
 'Quitter en bougeant la souris 
 Moi.Fermer() 
 Fin du sous-marin 
 
 Le sous-privé MyScreensaver_KeyDown (expéditeur en tant qu'objet, et en tant que KeyEventArgs) gère MyBase.KeyDown 
 'Quitter en appuyant sur une touche 
 Moi.Fermer() 
 Fin du sous-marin 
 
 'Empêcher l'économiseur d'écran de s'activer pendant son exécution 
 Remplacements protégés Sub OnActivated (e As EventArgs) 
 MaBase.OnActivated(e) 
 SetCursorPos(Me.Largeur \ 2, Me.Hauteur \ 2) 
 Fin du sous-marin 
 
 Fin du cours 
 ``` 
 
 Pour compiler et éventuellement déployer ceci : 
 
 1. Créez un nouveau projet d'application Windows Forms VB.NET. 
 2. Remplacez le code du formulaire par défaut par le code ci-dessus. 
 3. Ajoutez un contrôle Timer (Timer1) au formulaire. 
 4. Compilez le projet. Cela créera un fichier exécutable (.exe). 
 
 Pour déployer en tant qu'économiseur d'écran : Ceci est *significativement* plus complexe et nécessite la compréhension des mécanismes de déploiement des économiseurs d'écran (qui varient selon les versions de Windows). Vous devrez généralement créer un projet d'installation (par exemple, à l'aide du projet d'installation de Visual Studio) qui gère les entrées de registre et le placement des fichiers pour intégrer votre .exe en tant qu'option d'économiseur d'écran appropriée dans Windows. Le programme d'installation doit enregistrer l'exécutable auprès du système d'économiseur d'écran Windows. Des didacticiels et des ressources sont disponibles en ligne pour vous guider tout au long du processus de déploiement de l'économiseur d'écran ; la recherche de "Déploiement de l'économiseur d'écran VB.NET" sera utile. Cette étape dépasse le cadre d’un simple exemple de code. 
 
 Considérations importantes : 
 
 * Gestion des erreurs : Le code fourni ne dispose pas d'une gestion robuste des erreurs. Un économiseur d'écran prêt pour la production nécessiterait des contrôles d'erreur plus robustes. 
 * Performances : Pour les très hautes résolutions ou pour de nombreux cercles, vous aurez peut-être besoin de techniques d'optimisation pour maintenir une fréquence d'images fluide. 
 * Personnalisation : Vous pouvez facilement modifier l’apparence en modifiant la taille, la couleur et le numéro du cercle. Des graphismes plus sophistiqués pourraient également être implémentés. 
 
 
 N'oubliez pas que la distribution d'un économiseur d'écran nécessite un examen attentif des licences et des problèmes de sécurité potentiels. Testez minutieusement votre économiseur d'écran avant de le distribuer.