Cita:
Empezado por neuronic
para crear este efecto podrias capturar el escritorio, pasarlo a escala de grises y ponerlo al fondo de tu aplicacion a pantalla completa, esconder la barra de windows y despues con una ventana modal la aplicacion en si!!!
|
En código sería algo así.
Código Delphi
[-]
procedure BlancoYNegro(aControl : TControl);
var
dsk : HDC;
bdc : HDC;
num, i, x, y: integer;
pe: array[0..255] of TPaletteEntry;
ct: array[0..255] of TRGBQuad;
prom : byte;
c : word;
begin
dsk := GetDC(aControl.handle);
FBitmap.Width := aControl.Width;
FBitmap.Height := aControl.Height;
FBitmap.PixelFormat:= pf8bit;
num := GetPaletteEntries(FBitmap.Palette,0,256,pe);
for i := 0 to num-1 do
begin
c := trunc(pe[i].peRed*0.21+pe[i].peGreen*0.71+pe[i].peBlue*0.08);
ct[i].rgbBlue := c;
ct[i].rgbGreen := c;
ct[i].rgbRed := c;
ct[i].rgbReserved := 0;
end;
SetDIBColorTable(FBitmap.Canvas.Handle,0,num,ct);
DeleteObject(FBitmap.ReleasePalette);
bdc := FBitmap.Canvas.Handle;
BitBlt(bdc, 0,0, FBitmap.Width, FBitmap.Height, dsk, 0, 0, SRCCOPY);
ReleaseDC(aControl.Handle, dsk);
visible:= true;
end;
Edito: el código que te puse es para una captura en blanco y negro, para hacer el efecto de apagado, necesitas meterlo dentro de un bucle cambiando los valores numéricos (en el ejemplo 0.21 0.71 0.8) y con usando un delay al gusto del cliente.