Soyez le premier à donner votre avis sur cette source.
Vue 12 869 fois - Téléchargée 806 fois
//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.
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.