Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 02-09-2008
Avatar de MaMu
MaMu MaMu is offline
Miembro
 
Registrado: abr 2006
Ubicación: Argentina
Posts: 863
Poder: 19
MaMu Va por buen camino
Efecto Apagar Windows XP

Como puedo lograr el Efecto Apagar Windows XP, es decir, que el fondo de la pantalla quede en tono de grises, mientras que el Form de mi aplicación quede en colores.

Alguna idea?

Saludos y gracias
__________________
Código Delphi [-]
 
try 
ProgramarMicro(80C52,'Intel',MnHex,True);
except
On Exception do
MicroChip.IsPresent(True);
end;
Responder Con Cita
  #2  
Antiguo 02-09-2008
Avatar de neuronic
neuronic neuronic is offline
Miembro
 
Registrado: jul 2007
Ubicación: Catalunya
Posts: 32
Poder: 0
neuronic Va por buen camino
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!!!
Responder Con Cita
  #3  
Antiguo 02-09-2008
Avatar de droguerman
droguerman droguerman is offline
Miembro
 
Registrado: abr 2005
Ubicación: tierra
Posts: 999
Poder: 20
droguerman Va por buen camino
Cita:
Empezado por neuronic Ver Mensaje
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
  //obtener acceso al control
  dsk := GetDC(aControl.handle);
  //tamaño de la captura
  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
    //convertir a tono de gris, puedes jugar con los valores y obtener otros
   //resultados
    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);

  //el mapa de bits destino aqui especificas donde quieres poner la pantalla capturada
  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.
__________________
self.free;

Última edición por droguerman fecha: 02-09-2008 a las 16:13:25.
Responder Con Cita
  #4  
Antiguo 15-06-2011
Avatar de juanlaplata
juanlaplata juanlaplata is offline
Miembro
 
Registrado: ene 2007
Ubicación: La Plata, Bs. As. (Argentina)
Posts: 212
Poder: 18
juanlaplata Va por buen camino
Solo para q quede registrado por si alguien llega mediente una busqueda.
A mi tambien me interesaba dar este efecto a mi aplicacion , etc ... y un dia me desperte creativo ( dicho asi por utilizar solo lo que se tiene a mano y alcanze de conocimientos ) y se me ocurrio lo siguiente.
Tener un Form vacio, sin borde, sin componentes, sin nada, con las siguientes propiedades:
---------------------------
AlphaBlend = True
AlphaBlendValue = 200
BorderStyle = bsNone
WindowState = wsMaximized
---------------------------

Luego, al momento de usar dicho efecto;
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
Form3 := TForm3.Create(Application);
Form3.Show;
//----------------------------------
Form2 := TForm2.Create(Application);
Form2.ShowModal;
Form2.Free;
//----------------------------------
Form3.Free;
end;
Donde Form1 es el ppal, Form2 es el q quiero que quede activo en primer plano, y Form3 es el q produce el efecto de apagado.
Y para aquel que quiere llegar un poco mas alla, se puede hacer una rutina jugando con la propiedad AlphaBlendValue llevandola desde 0 hasta 200 para q el efecto sea progresivo .

Última edición por juanlaplata fecha: 15-06-2011 a las 14:53:56.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Se puede saber cuando se esta por apagar windows? Martin API de Windows 4 27-12-2006 14:57:28
apagar windows unko! API de Windows 22 03-04-2005 13:00:59
urge. apagar windows XP mrmanuel API de Windows 3 06-09-2003 05:09:24
Apagar pc con Win XP mrmanuel OOP 5 16-07-2003 12:11:34


La franja horaria es GMT +2. Ahora son las 08:06:17.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi