Background d'une Windows Form [Résolu]

Signaler
Messages postés
286
Date d'inscription
dimanche 3 octobre 2010
Statut
Membre
Dernière intervention
16 mai 2014
-
 Utilisateur anonyme -
Bonjour,

Je permet à l'utilisateur via un OpenFileDialog de changer l'image de fond :

frmAccueil.BackgroundImage = Image.FromFile(C:\Maphoto.jpg)


Cependant, a la fermeture de l'application, cela n'enregistre pas les changements.

Savez vous comment enregistrer ce changement de propriete ?

cordialement
A voir également:

23 réponses

Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
50
Salut

tu peux te servir du setting
project -> properties -> settings
tun declare ta variable dans ton cas c'est le
chemin du fichier image
par ex
Name type scope value
mypath string user

dans le code
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load
        If My.Settings.mypath <> String.Empty Then
            Me.BackgroundImage = Image.FromFile(My.Settings.mypath)
        End If


    End Sub


dans le code du openfiledialog
My.Settings.mypath = OpenFileDialog1.FileName
 My.Settings.Save()

va dire bonjour au poissons

C'est ce que j'ai fait! comment sais-tu?

Moundir:
je ne saurais certainement jamais pourquoi j'avais cette erreur et toi non...

De toute façon je trouvait nôtre solution un peu lourde, ne cherche pas...

Cordialement


CF2i - Guadeloupe
Ingénierie Informatique

Bonjour,

Il faudrait que tu stockes le chemin de l'image dans un fichier texte, base de données ou autre, à chaque changement.

Au démarrage tu lis le chemin de l'image en question et tu l'affiches en fond d'écran.



Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
Messages postés
286
Date d'inscription
dimanche 3 octobre 2010
Statut
Membre
Dernière intervention
16 mai 2014

Bonjour et merci,

Etonnant, je pensais que l'on pouvait enregistrer les changements


Dans ce cas la, comment faire ? si je décide de mettre le chemin de l'image dans un fichier texte. Mettre le fichier texte dans les ressources ?

Je ne vois pâs trop comment m'y prendre.

Cordialement

Tu as raison,

Il faut arriver à changer le My.Resources. 'ton fichier jpg'
Je cherche un peu...


Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
Messages postés
286
Date d'inscription
dimanche 3 octobre 2010
Statut
Membre
Dernière intervention
16 mai 2014

Encore une fois Acive, un grand merci pour te pencher sur mon problème

Je ne vois pas ce que tu veux faire avec le My.Ressources. Car mon BackGroundImage est en local et l'image n'est pas dans les ressources.

Sinon j'ai une autre solution, je ne sais pas si c'est faisable, par exemple, laisser le choix à l'utilisateur de la photo, ensuite on la copie dans les ressources et on la renomme par exemple en Imagedefond.jpeg. Et si on change d'image alors celle qui se trouve dans les ressources sera effacée et remplacée.

Oui c'est un peu ça que voulais faire, mais je cherche à voir comment on change l'image dans les ressources.

Mais il est 9 heures du mat chez moi et mon cerveau a du mal à démarrer...


Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
Messages postés
286
Date d'inscription
dimanche 3 octobre 2010
Statut
Membre
Dernière intervention
16 mai 2014

Mais il est 9 heures du mat chez moi et mon cerveau a du mal à démarrer...


Je comprends ^^

J'ai trouvé un contournement de solution.

Lorsque l'utilisateur sélectionne une image, on la copie avec toujours le même nom dans le dossier de l'application, puis a chaque load de la form, on fait appel a cette image pour la définir (vu qu'elle sera toujours dans le dossier de l'appli avec le même nom...

Je vais tenter et je te redis, sauf si tu trouves une meilleure solution
Messages postés
286
Date d'inscription
dimanche 3 octobre 2010
Statut
Membre
Dernière intervention
16 mai 2014

Oui ca fonctionne bien comme ça !

Seul inconvénient, a chaque load de la form on va recharger l'image.

Atout : si jamais l'image n'existe plus alors celle qui est dans les ressources sera affichée automatiquement :)

A++
Messages postés
286
Date d'inscription
dimanche 3 octobre 2010
Statut
Membre
Dernière intervention
16 mai 2014

Le processus ne peut pas accéder au fichier 'backgroundAccueil.jpg', car il est en cours d'utilisation par un autre processus.


JE n'ai rien dit... retour a la case départ...

Ok,
J'avais testé de la remplacer (l'image) dans le dossier Ressources et ça ne changeait pas...

Du coup avec ta solution, on a pas de fichier texte pour y stocker le chemin mais un copier/coller de l'image, pourquoi pas?

Mais on ne change toujours pas le My.ressources... ça doit pouvoir se faire aussi.


Cordialement


CF2i - Guadeloupe
Ingénierie Informatique

Le processus ne peut pas accéder au fichier 'backgroundAccueil.jpg', car il est en cours d'utilisation par un autre processus.


Tu as du le laissé ouvert avec paint ou quelque chose du genre, non?


Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
Messages postés
286
Date d'inscription
dimanche 3 octobre 2010
Statut
Membre
Dernière intervention
16 mai 2014

Non l'image n'est ouverte nulle part sauf dans mon Background, mais j'ai pris soin de mettre le Background à Nothing avant....

JE ne comprends pas :/

Merci pour ton aide !

Si... je viens de tester ça:
Imports System.IO
Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        ChangeBackground()
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim Fich As OpenFileDialog = New OpenFileDialog
        Fich.ShowDialog()
        Me.Text = Fich.FileName
        FileCopy(Fich.FileName, Application.StartupPath & "\Logo.jpg")
        ChangeBackground()
    End Sub

    Private Sub ChangeBackground()
        If File.Exists(Application.StartupPath & "\Logo.jpg") = True Then
            Me.BackgroundImage = Image.FromFile(Application.StartupPath & "\Logo.jpg")
        End If
    End Sub
End Class



Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
Messages postés
286
Date d'inscription
dimanche 3 octobre 2010
Statut
Membre
Dernière intervention
16 mai 2014

Merci pour ton code, mais toujours la même erreur ...

Ton fichier image doit être ouvert quelque-part... chez moi ça marche bien.

Regarde dans le gestionnaire des tâches (Ctrl+Alt+Supp) si tu vois son processus en cours.

Cordialement


CF2i - Guadeloupe
Ingénierie Informatique

Merci Shay,
J'avais oublié celui-la...
décidément aujourd'hui ça "rame" chez moi...

Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
Messages postés
286
Date d'inscription
dimanche 3 octobre 2010
Statut
Membre
Dernière intervention
16 mai 2014

Je viens de regarder j'ai même redemarré mon ordinateur, et je n'ai ouvert que l'application, et j'ai toujours la même erreur "Le processus ne peut pas accéder au fichier 'backgroundAccueil.jpg', car il est en cours d'utilisation par un autre processus."

Je ne comprends absolument pas. D'un sens cela me parait logique si cette image est utilisée par VB pour le backgroundImage, mais pourquoi y arrives tu toi ?

Laisse voir ton code, sinon essaye la méthode de Shay, désolé je dois sortir je reviens dans quelques heures.


Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
Messages postés
286
Date d'inscription
dimanche 3 octobre 2010
Statut
Membre
Dernière intervention
16 mai 2014

J'utilise ton code ...

Je vais essayer celui de ShayW (d'ailleurs merci)

No souci