|
Trouver une ressource
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
DIRECTX OVERLAY - CHANGE WALLPAPER ON DESKTOP WITH DIRECTX
Information sur la source
Description
Vous trouverez le programme compilé et l'installeur à cette addresse: http://overlaypaper.sourceforge.net/ vous trouverez les derniers codes pour ce programme sur le repository de sourceforge: http://overlaypaper.svn.sourceforge.net/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/ *Telecharger 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. @+
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
Sources en rapport avec celle ci
Commentaires et avis
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
|
Téléchargements
Logiciels à télécharger sur le même thème :
|