begin process at 2010 02 10 05:40:04
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

DirectX / OpenGL

 > DIRECTX OVERLAY - CHANGE WALLPAPER ON DESKTOP WITH DIRECTX

DIRECTX OVERLAY - CHANGE WALLPAPER ON DESKTOP WITH DIRECTX


 Information sur la source

Note :
7 / 10 - par 1 personne
7,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :DirectX / OpenGL Source .NET ( DotNet ) Classé sous :overlay, wallpaper, DirectDraw, OverlayEffects, fondu Niveau :Initié Date de création :30/10/2008 Date de mise à jour :20/04/2009 18:23:55 Vu / téléchargé :3 553 / 157

Auteur : youpiyoyo

Ecrire un message privé
Commentaire sur cette source (2)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
Vous trouverez le programme compilé et l'installeur à cette addresse:
http://overlaypaper.sourceforge.net/

vo us trouverez les derniers codes pour ce programme sur le repository de sourceforge:
http://overlaypaper.svn.sourceforge.n et/viewvc/overlaypaper/

Merci de me le faire savoir si quelqu'un veut contribuer à l'avancement de ce projet
Information pour la compil:
*Telecharger libvlc.dll et le repertoire des plugins de vlc 0.8.x
à cette addresse http://download.videolan.org/pub/videolan/vlc/

*T elecharger mediainfo
à cette addresse:
http://mediainfo.sourceforge.net
mettre le tout dans debug/release

pour la compil du script nsis mettre toutes les librairies dans release.
Description:

Voici mon premier prog en C#...
J'avais plutôt l'habitude de programmer soit en C++ api win32 ou pour mon taf en vb.net.

Je suis finalement pas trop fan de C#, il a les défaut de C++ et pas aussi intuitif que vb.net. bref à l'avenir je préférerai soit coder en api win32 soit en vb.net.

J'ai téléchargé les sources de vlc 0.9.4, et adapter le directx-wallpaper sur ce prog uniquement pour les wallpapers.

J'ai repris pas mal de code traduit en C# de vlc et également le BLit d'une source sur code project (overlay tool).
je tenais aussi à dire que l'equipe de vlc sont des bêtes, leur code est incroyable.

Source

  • //overlay trick: desktop color:0x80010
  • //OverlayEffects avec color: ck.ColorSpaceLowValue = ck.ColorSpaceHighValue = 0x100008;
  • // OverlayDirectX
  • //Première étape enlevé le wallpaper et mettre a black pour Overlay:
  • private void SwitchWallpaperMode(bool onOff)
  • {
  • int[] elements = { 1 };
  • if (onOff)
  • {
  • int[] backgorund = { ColorTranslator.ToWin32(SystemColors.Desktop) }; //save the current desktop color
  • color_bkg = backgorund;
  • int[] colors = { 0x80010 };
  • SetSysColors(elements.Length, elements, colors); // put black to the desktop color
  • SystemParametersInfo(20, 0, "", 0); //remove wallaper
  • ToggleScreenSaverActive(onOff); //switch off the screensaver
  • }
  • else
  • {
  • SetSysColors(elements.Length, elements, color_bkg); //restore old desktop color
  • SystemParametersInfo(20, 0, null, 0); //restore wallpaper
  • ToggleScreenSaverActive(onOff); //switch on the screensaver
  • }
  • }
  • //Deuxième étape DirectXInitDDraw (initialise les directdraw surface:
  • private void DirectXInitDDraw()
  • {
  • _displayDevice = new Microsoft.DirectX.DirectDraw.Device(); //create the device
  • _displayDevice.SetCooperativeLevel(null, CooperativeLevelFlags.Normal);
  • SurfaceDescription description = new SurfaceDescription();
  • description.SurfaceCaps.PrimarySurface = true;
  • _front = new Surface(description, _displayDevice); //set the front to the primary surface
  • description.Clear();
  • description.SurfaceCaps.Overlay = true; //prepare the description of overlay surface
  • description.SurfaceCaps.Flip = true;
  • description.SurfaceCaps.Complex = true;
  • //description.SurfaceCaps.VideoMemory = true;
  • description.Width = _screenWidth;
  • description.Height = _screenHeight;
  • description.BackBufferCount = 1;
  • PixelFormat pxFrmt;
  • pxFrmt.FourCC = 0x32595559; //Yuv2
  • pxFrmt.FourCcIsValid = true;
  • description.PixelFormatStructure = pxFrmt;
  • overlay = new Surface(description, _displayDevice);
  • SurfaceCaps caps = new SurfaceCaps();
  • caps.BackBuffer = true;
  • _back = overlay.GetAttachedSurface(caps); //caps surface
  • ColorKey ck = new ColorKey();
  • ck.ColorSpaceLowValue = ck.ColorSpaceHighValue = 0x100008; //color overlay effect to draw on desktop color 0x80010 (see SwitchWallpaperMode)
  • overFX.DestinationColorKey = ck;
  • overFX.ArithmeticStretchY = true;
  • }
  • //troisieme étape
  • //blit un bitmap to backbuffer
  • //exemple:
  • //Blit((Bitmap)m_RenderTarget, _back);
  • //overlay.Flip(null, FlipFlags.Wait);
  • //voir code pour le blit c'est du GDI+
  • //Attention à la première image updaté l'overlay ex:
  • //overlay.UpdateOverlay(_back, OverlayFlags.Show | OverlayFlags.Effects | OverlayFlags.KeyDestinationOverride, overFX); //update overlay for the first time
  • //Class Transition
  • //voir class pour code du birghtness et setcolormatrix pour l'opacity.
//overlay trick: desktop color:0x80010
//OverlayEffects avec color: ck.ColorSpaceLowValue = ck.ColorSpaceHighValue = 0x100008;


// OverlayDirectX
//Première étape enlevé le wallpaper et mettre a black pour Overlay:
        private void SwitchWallpaperMode(bool onOff)
        {

            int[] elements = { 1 };
            if (onOff)
            {
                int[] backgorund = { ColorTranslator.ToWin32(SystemColors.Desktop) }; //save the current desktop color
                color_bkg = backgorund;
                int[] colors = { 0x80010 };
                SetSysColors(elements.Length, elements, colors); // put black to the desktop color
                SystemParametersInfo(20, 0, "", 0); //remove wallaper
                ToggleScreenSaverActive(onOff); //switch off the screensaver
            }
            else
            {
                SetSysColors(elements.Length, elements, color_bkg); //restore old desktop color
                SystemParametersInfo(20, 0, null, 0); //restore wallpaper
                ToggleScreenSaverActive(onOff); //switch on the screensaver
            }

        }
//Deuxième étape DirectXInitDDraw (initialise les directdraw surface:
        private void DirectXInitDDraw()
        {
            _displayDevice = new Microsoft.DirectX.DirectDraw.Device(); //create the device
            _displayDevice.SetCooperativeLevel(null, CooperativeLevelFlags.Normal);
            SurfaceDescription description = new SurfaceDescription();
            description.SurfaceCaps.PrimarySurface = true;
            _front = new Surface(description, _displayDevice); //set the front to the primary surface
            description.Clear();
            description.SurfaceCaps.Overlay = true;  //prepare the description of overlay surface
            description.SurfaceCaps.Flip = true;
            description.SurfaceCaps.Complex = true;
            //description.SurfaceCaps.VideoMemory = true;
            description.Width = _screenWidth;
            description.Height = _screenHeight;
            description.BackBufferCount = 1;

            PixelFormat pxFrmt;
            pxFrmt.FourCC = 0x32595559; //Yuv2
            pxFrmt.FourCcIsValid = true;

            description.PixelFormatStructure = pxFrmt;
            overlay = new Surface(description, _displayDevice);
            SurfaceCaps caps = new SurfaceCaps();
            caps.BackBuffer = true;

            _back = overlay.GetAttachedSurface(caps); //caps surface
 
            ColorKey ck = new ColorKey();
            ck.ColorSpaceLowValue = ck.ColorSpaceHighValue = 0x100008; //color overlay effect to draw on desktop color 0x80010 (see SwitchWallpaperMode)

            overFX.DestinationColorKey = ck;
            overFX.ArithmeticStretchY = true;


        }

//troisieme étape
//blit un bitmap to backbuffer
//exemple:
//Blit((Bitmap)m_RenderTarget, _back);
//overlay.Flip(null, FlipFlags.Wait);
//voir code pour le blit c'est du GDI+
//Attention à la première image updaté l'overlay ex:
//overlay.UpdateOverlay(_back, OverlayFlags.Show | OverlayFlags.Effects | OverlayFlags.KeyDestinationOverride, overFX); //update overlay for the first time
                    
//Class Transition
//voir class pour code du birghtness et setcolormatrix pour l'opacity.

 Conclusion

Elle autorise le drag and drop et gère quelques événements (Buttons/radio buttons/image preview etc...)
En espérant que cela aide certaine personne dans le direct x, ou il faut avouer que ce n'est pas aussi documenter et même sur le web on trouve peu d'exemples que le reste.

voilou.
@+

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

30 octobre 2008 17:00:39 :
rajout du post fait sur www.codeproject.com
08 novembre 2008 23:43:09 :
*suppression de l'addresse codeproject... *Modification sur la taille du screen (bounds au lieu de workingarea). *remplacement de l'arraylist de bitmap par une class stockant le memorystream du bitmap en jpg, ce qui est beaucoup mois gourmand en ram. *je travail encore sur l'adaptation ffmpeg pour le C#, pas évident car ne peut être compilé avec visual. et je travail également sur le fondu qui prend trop de cpu, je suis entrain de voir comment diminuer l'alpha du front (surface) pour qu'il fade sur le background pour éviter la surcharge cpu.
12 novembre 2008 14:00:57 :
*Modification du code: fondu au blanc (beaucoup moins gourmand en ressource). Je suis entrain de creer une class avec les différents transition possible. fondu au blanc, au noir, opacité, etc... Je sais il me reste les commentaires qui viennent (note qu'il y a plein de void qui ne marche pas encore)
13 novembre 2008 21:40:27 :
*bon voila dernière mise ajour: *Création de radio button pour choisir les transitions(white/black/opacity) *Amélioration mémoire
14 novembre 2008 16:18:53 :
*double click de la play list added. *si overlay non lancé il lance a l'index selected *sinon si running il rempli l'overlay surface avec l'index choisit au prochain call du thread.
04 mars 2009 16:31:00 :
Nouvelle Version... les MAJ: *correction de quelques bugs. *rotation automatiques des images en fonction des informations EXIF si elles sont présente dans la photo. *Support des videos à l'aide de libvlc.dll -il faut copier libvlc et le repertoire des plugins dans debug ou release pour le faire fonctionner. -adresse: http://download.videolan.org/pub/videolan/vlc/ J'utilise la version 0.8.6i, à partir de 0.9.x il y a problème de détection de libvlc. *Script NSIS inclut: -il faut que libvlc et plugins soit present dans release. *OS: Xp/Vista-32, la version 64 renvoi une erreur sur la class OverlayDirectX et ne trouve pas libvlc.
05 mars 2009 11:49:45 :
Ajout de l'adresse Sourceforge pour l'installer
16 mars 2009 12:20:00 :
Ajout d'une treeview a la place de la list view / ajout de différents menustrips/gestion de playlist au format xml/ ajout de mediainfo pour les détails des médias/gestion d'un multiple select de la treeview/ajout de tooltips/rotation automatique des images si EXIF présent
20 avril 2009 18:23:58 :
Mise ajour de version: 1.0Rc3

 Sources de la même categorie

Source avec Zip Source avec une capture Source .NET (Dotnet) 3VE-WALKER par jyce3d
Source avec Zip Source avec une capture Source .NET (Dotnet) IMAGINE: BASE D'UN MOTEUR 3D DIRECTX par Children
Source avec une capture Source .NET (Dotnet) SE SERVIR D'UNE MANETTE OU JOYSTICK par soussous78
Source avec Zip Source avec une capture Source .NET (Dotnet) MOVIE PLAYER (MANAGED DIRECTX) par Zap
Source avec Zip Source avec une capture Source .NET (Dotnet) EXPLORATION DE LABYRINTHE 3D par damned3

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture Source .NET (Dotnet) YTREWQ - POUR MODIFIER RÉGULIÈREMENT VOTRE FOND D'ÉCRAN par ANTHIBUG
Source avec Zip Source .NET (Dotnet) PAPIER_PEINT par BleuVoileChien
Source avec Zip Source avec une capture Source .NET (Dotnet) ANIMATED WALLPAPER par g_ramzi
Source avec Zip Source .NET (Dotnet) UNE CLASSE DE MISE EN OEUVRE DE DIRECTX (DIRECTDRAW) par bob94700
Source avec Zip Source avec une capture Source .NET (Dotnet) WALLÉATOIRE, GESTIONNAIRE DE FONDS D'ÉCRAN par gulix

Commentaires et avis

Commentaire de Willi le 30/10/2008 19:55:14 administrateur CS 7/10

Il y a de bonnes choses et mais cela manque de commentaires pour comprendre certains points. ++

Commentaire de youpiyoyo le 30/10/2008 20:59:00

oui c'est mon défaut effectivement... mais comme pour moi ceci est un prog de test pour un autre programme, ce qui m'importe c'est la class overlay que j'ai créé. mais merci pour ton commentaire, j'ajouterai certaines explications sur la class overlay et non sur la form puisque c'est juste de la gestion d'evenement et donc rien de passionnant.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Managed DirectDraw [ par sebseb42 ] Bonjour a tous,Voila je voudrais utiliser DirectDraw dans une application, je voudrais savoir si vous saviez comment initialiser une fenetre DirectDra DirectDraw [ par RM50Man ] J'ai fais une belle bitmap rectangulaire, mais quand j essaye de l 'afficher elle est toute deformer, et elle est carré!!!Si quelqu'un peut m'aid DirectDraw [ par taupe4 ] Je commence la programmation avec DirectX 9.0b en c# mais j'aimerais savoir s'il y a une DLL pour DirectDraw. Si il y en a une , est-ce que quelqu'un Logiciel de changement de wallpaper [ par Seth77 ] Salut Je me suis fait un logiciel permettant de changer le fond d ecran de windows .. Si quelqu un veut bien l essayer et me donner son avis... http: Surbrillance dans une form [ par oximoron ] Bonjour à tous codes-sourciens,Je poste aujourd'hui, car je ne trouve pas de solution à mon problème. Cela fait plusieurs semaines (bon j'ai fait autr


Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,499 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales