WallChanger 1.2

Programmation d'applications complexes
Gillou
Messages : 373
Inscription : sam. 28/août/2004 17:35
Localisation : Bretagne, 22
Contact :

Message par Gillou »

Salut,

Super sympa, programme déjà adopté,

Par contre il me semble que l'image n'est pas redimensionnée proportionnellement

De plus j'ai le coin supérieur gauche de l'image ou j'ai un trait rouge oblique d'une dizaine de pixel?

Est-ce du à ma résolution? 1680x1050?
lionel_om
Messages : 1500
Inscription : jeu. 25/mars/2004 11:23
Localisation : Sophia Antipolis (Nice)
Contact :

Message par lionel_om »

Gillou a écrit :Par contre il me semble que l'image n'est pas redimensionnée proportionnellement

De plus j'ai le coin supérieur gauche de l'image ou j'ai un trait rouge oblique d'une dizaine de pixel?

Est-ce du à ma résolution? 1680x1050?
L'image est agrandie comme quand tu sélectionne "étirée" dans Affichage / arrière plan.

Pour le problème du trait rouge c'est du à une ancienne version ou j'avais oublié d'enlever cette ligne de debuggage, donc download la dernière version et ce trait disparaitra (t'as du télécharger pile au mauvais moment).

Merci pour vos remarques à tous les 2!

Lio :D
Webmestre de Basic-univers
Participez à son extension: ajouter vos programmes et partagez vos codes !
Gillou
Messages : 373
Inscription : sam. 28/août/2004 17:35
Localisation : Bretagne, 22
Contact :

Message par Gillou »

Effectivement, je viens de regarder et c'est le redimensionnement de Windows qui est pas extra, y'aurait pas moyen d'intégrer une option de choix du format d'affichage? Etirer, Agrandissement proportionnel, Mosaïque sans passer par les paramètres de l'affichage comme dans le code qui suit?
Procedure SetWallpaper(FileName.s, TempFileBMP.s, BackgroundColor.l = $FFFFFF, Mode.l = 1) ; Mode: 1=Etirer, 2: Proportionnel, 3:Mosaïque
  Protected ImageIn.l, ImageOut.l, W, H
  
  ImageIn = LoadImage ( #PB_Any , FileName)
   If IsImage (ImageIn)
    W = ImageWidth (ImageIn)
    H = ImageHeight (ImageIn)
    WS = GetSystemMetrics_ ( #SM_CXSCREEN )
    HS = GetSystemMetrics_ ( #SM_CYSCREEN )
     If Mode = 1 ; ETIRER
         ResizeImage (ImageIn, WS, HS, #PB_Image_Smooth )
         If SaveImage (ImageIn, TempFileBMP, #PB_ImagePlugin_BMP )
            FileName = TempFileBMP
         Else
            Warning( "Can't convert image to BMP file !" )
         EndIf
     ElseIf Mode = 2 ; PROPORTIONNEL
        ImageOut = CreateImage ( #PB_Any , WS, HS)
         If StartDrawing ( ImageOutput (ImageOut))
             Box (0, 0, WS, HS, BackgroundColor)
            WC.f = WS / W
            HC.f = HS / H
             If WC > HC
                 DrawImage (ImageOut, Round ((WS - Round (HC * W, 0)) / 2, 0), 0, Round (HC * W, 0), HS)
             Else
                 DrawImage (ImageOut, 0, Round ((HS - Round (WC * H, 0)) / 2, 0), WS, Round (WC * H, 0))
             EndIf
             StopDrawing ()
             If SaveImage (ImageOut, TempFileBMP, #PB_ImagePlugin_BMP )
                FileName = TempFileBMP
             Else
                Warning( "Can't convert image to BMP file !" )
             EndIf
             FreeImage (ImageOut)
         EndIf
     Else ; MOSAIQUE
        ImageOut = CreateImage ( #PB_Any , WS, HS)
         If StartDrawing ( ImageOutput (ImageOut))
             Box (0, 0, WS, HS, BackgroundColor)
            Col = Round (WS/W, 1)
            Row = Round (HS/H, 1)
             For X = 0 To Col-1
                 For Y = 0 To Row-1
                     DrawImage ( ImageID (ImageIn), X*W, Y*H)
                 Next
             Next
             StopDrawing ()
             If SaveImage (ImageOut, TempFileBMP, #PB_ImagePlugin_BMP )
                FileName = TempFileBMP
             Else
                Warning( "Can't convert image to BMP file !" )
             EndIf
             FreeImage (ImageOut)
         EndIf
     EndIf
     FreeImage (ImageIn)
    SetWallpaperBMP(FileName, "2" )
     ProcedureReturn #True
   Else
    Warning( "This file is not a picture or does not exist :" + #CRLF$ + FileName)
     ProcedureReturn #False
   EndIf
EndProcedure
lionel_om
Messages : 1500
Inscription : jeu. 25/mars/2004 11:23
Localisation : Sophia Antipolis (Nice)
Contact :

Message par lionel_om »

Gillou a écrit :Effectivement, je viens de regarder et c'est le redimensionnement de Windows qui est pas extra, y'aurait pas moyen d'intégrer une option de choix du format d'affichage? Etirer, Agrandissement proportionnel, Mosaïque sans passer par les paramètres de l'affichage comme dans le code qui suit?
Si je vais inclure ça, tester puis après updater tout cela.
Merci pour cette remarques et ce code

Lio :wink:
Webmestre de Basic-univers
Participez à son extension: ajouter vos programmes et partagez vos codes !
lionel_om
Messages : 1500
Inscription : jeu. 25/mars/2004 11:23
Localisation : Sophia Antipolis (Nice)
Contact :

Message par lionel_om »

Grâce à l'idée et la procédure de Gillou, la version 1.2 est maintenant disponible, toujours au même lien : WallChanger 1.2. Maintenant donc il est possible de définir le format d'affichage : étiré, maximisé ou mozaic.

Enjoy !
Lio :wink:
Webmestre de Basic-univers
Participez à son extension: ajouter vos programmes et partagez vos codes !
Gillou
Messages : 373
Inscription : sam. 28/août/2004 17:35
Localisation : Bretagne, 22
Contact :

Message par Gillou »

Merci pour la modif, impec!
lionel_om
Messages : 1500
Inscription : jeu. 25/mars/2004 11:23
Localisation : Sophia Antipolis (Nice)
Contact :

Message par lionel_om »

Nouvelle version. Juste quelques modifications:
  • ADD: style d'image: centré (sans redimensionnement)
  • FIX: Le générateur aléatoire de PB doit être initialisé selon le temps depuis lequel le PC tourne. Hors si le programme est lancé au démarrage, il sera exécuté à peu près au même moment à chaque démarrage. Là je me base sur la date !
Re-voici le lien: WallChanger

/Lio
Webmestre de Basic-univers
Participez à son extension: ajouter vos programmes et partagez vos codes !
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

adopté !! :D

Grand Merci pour ce programme !

j'etais passé a coté !! :)

bon bouleau , marche bien chez moi :)

Merci encore :)
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

petit probleme a résoudre cependant ! (sous XP)

lors du changement d'image

celle ci s'affiche devant toute aplication en activité !!

c'est embétant !

j'ai mozilla en plein ecran , je surf , et d'un coup , je vois apparaitre l'image du fond de bureau qui se change , en plein ecran, qui passe devant mozilla !!
puis disparait , me réaffichant mon mozilla ;)

faudrai pas que pendant le changement d'image , l'image passe devant les applications !! :?

:)
lionel_om
Messages : 1500
Inscription : jeu. 25/mars/2004 11:23
Localisation : Sophia Antipolis (Nice)
Contact :

Message par lionel_om »

Salut Dobro,

J'ai pas tout bien compris... :?
Par contre WallChanger est mis automatiquement en pause dès qu'il détecte une application en plein écran (visionnage d'un film, etc...). Il attend que plus aucaun programme se soit en plein écran et il change directement pour une nouvelle image.
Qu'est-ce que tu appelles plein écran Mozilla ? = touche F11 ? C'est quoi qui déconne car j'ai testé et ca marche (sous XP x32 SP2 et XP x64).

/Liå
Webmestre de Basic-univers
Participez à son extension: ajouter vos programmes et partagez vos codes !
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

ce que j'apelle plein ecran avec mozilla c'est lorsque tu agrandi au maximum la fenetre :)
avec le petit carré a gauche de la croix de fermeture :)

a ce moment lorsque le fond d'ecran change , chez moi , l'image passe un instant en avant plan au moment du changement :)
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

bon attends !!

il semblerai que ce probleme n'a lieu que sur l'un de mes PC !! :)

je recherche d'ou ça viens !! :D
lionel_om
Messages : 1500
Inscription : jeu. 25/mars/2004 11:23
Localisation : Sophia Antipolis (Nice)
Contact :

Message par lionel_om »

Super bizarre ce comportement... Sur mes 3 PCs je n'ai jms constaté ce problème.
Le seul que j'ai c'est lorsque Media Player Classic lit un DivX (mais pas en plein écran). Lors du changement d'image l'image dans le lecteur est remplacée par une image unie. Mais il suffit de mettre manuellement WallChanger en pause pour que la lecture ne soit pas perturbée...

/Liå
Webmestre de Basic-univers
Participez à son extension: ajouter vos programmes et partagez vos codes !
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

bon j'enqueterai plus tard , une partie de l'electricité de ma maison a sauté !

et bien sur la piece ou se trouve ma tour principale est concerné !

je viens tout juste de trouver ou se trouve le dijoncteur differentiel
ces cons sont allez le mettre dans un endroit ou je ne peux me glisser

car en hauteur (~ 2m,50) et au dessus d'une des pieces de la maison
cette piece (une des salles de bains) etant un pavé dans une piece plus grande ..
comme la surface de ce "pavé" arase le toit de la maison , il faut que je trouve un gamin
dans le quartier , pour l'envoyer ré-enclencher le dijoncteur !! :lol:

c'est pratique !!


si je tenais l'electro du dimanche qui m'a pondu un truc pareil !! :twisted:

c'est le soucis des vielles maison ça ! :)
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

pour en revenir a u petit probleme rencontré , je crois que j'ai trouvé !

j'avais dans les parametres de ma carte graphique (nvidia geforce 7600 GT)
le parametre "activer la combinaison d'ecriture" d'activé !!

depuis que j'ai désactivé ce parametre (je sais meme pas a quoi il sert)
ton prg ne s'impose plus par dessus mon navigateur !! :)

c'est toujour bon a savoir :)


a ajouter , lorsqu'on met le curseur souris sur l'icone du systray
il faudrai une bulle qui indique dans combiens de temps aura lieu le prochain changement de fond d'ecran !!

ça permet de verifier s'il tourne toujours

puis c'est utilse dans les tests ;)
Répondre