Delphi - Copiar desktop

 
Vista:

Copiar desktop

Publicado por Cristián (115 intervenciones) el 10/10/2003 07:20:49
Hola!! Yo de nuevo, les pido su ayuda, no entiendo lo que pasa.... Lo que quiero es hacer el efecto de que mi form se desbanesca como si se hiciera transparente hasta no verse... se que existe el alphablend, pero en Win95-Me eso no existe, así que tengo otra idea. Primero tengo un algoritmo que de aqui mismo copie y que sirve para pasar bit x bit de una imagen a otra (imagenes del mismo tamaño) y eso da un efecto muy padre, ahora, tambien tengo el código para copiar el escritorio, lo que hice fue copiar el escritorio en las mismas coordenas en donde esta mi form y ya teniendo la imagen del escritorio, con el otro algoritmo paso la imagen de mi form (que ocupa toda la form) a la de la copiada del escritorio, de esta forma parece como que se desbanece y es lo que quiero....... El problema es que implantado el código no funciona :'(

Primero para copiar el escritorio modifique tantito el codigo que vi para que copie la misma area que ocupa mi form (no tiene bordes ni botones ni barra de titulo y tiene y esta posicionada al centro de la pantalla)

application.Minimize;
DeskTop := TCanvas.Create ;
try
with DeskTop do
Handle := GetWindowDC (GetDesktopWindow) ;
with Image2.Canvas do
CopyRect (Rect (0, 0, form1.Width, form1.Height), DeskTop, Rect (form1.Left, form1.Top, form1.Left+form1.Width, form1.Top+form1.Height))
finally
DeskTop.Free
end;
application.Restore;

[ .... sigue en la respuesta, ya no cupo]
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Copiar desktop

Publicado por Cristián (115 intervenciones) el 10/10/2003 07:21:23
Verifique y efectivamente en image2 se dibujo la parte que ocupa mi form. Despues uso este otro para pasar de image1 (la de la form) a image2 (lo comprobe con otra imagen y si funciona)

Bitmap2 := Image2.Picture.Bitmap; // es a la que se pasa
with Image1.Picture.Bitmap do //es la que cambia
begin
for i := 24 downto 0 do
begin
k := i + 1;
for r := 0 to Height - 1 do
begin
row := Scanline[r];
row2 := Bitmap2.Scanline[r];
for c := 0 to Width * 3 - 1 do
row[c] := (integer(row[c]) * i + row2[c]) div k;
end;
Image1.Repaint;
sleep(200);
end;
end;

Pues yo digo que en teoria debe funcionar ya que he usado varias veces este algoritmo con exito, pero con la variante de la imagen capturada no sirve.. :'( Al momento de hacer el paso de una imagen a otra se pone como gris toda la ventana por un rato... Qué estare haciendo mal?? Espero me ayuden, ya que he intentado un monton de cosas, pero no funcionan.. Gracias :-)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Copiar desktop

Publicado por seoane (65 intervenciones) el 11/10/2003 01:26:09
Se me ocurre que puede ser que los bitmap que usas no tengan la propiedad PixelFormat igual eso haria que no funcionara. No se si es eso pero compruebalo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Copiar desktop

Publicado por Cristián (115 intervenciones) el 11/10/2003 01:42:47
Hola!! pues estube buscando posibles fallas.... y lo único que vi de diferente es el tamaño del archivo..... por ejemplo, cuando paso de image1 a image2 y ambas tienen las mismas dimensiones y mismo tamaño, el proceso es exitoso (es que paso de una imagen a colores a una a escala de grises,, image1 y image2 respectivamente), pero cuando copio la imagen del escritorio, tambien tiene las mismas dimensiones, pero el tamaño es diferente...es como el doble... Todas las imagenes son BMP, puesto que el algoritmo solo soporta BMP,........ pero si tienen la misma dimensión... que es lo que le da el peso al archivo (ya que proble salvarlo en disco duro)??? Es lo unico que encontre de diferente y lo que puede estar causando el error.. Espero me ayuden. Gracias :-)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Copiar desktop

Publicado por Diego Romero (636 intervenciones) el 11/10/2003 02:22:09
Pues en un BMP lo que influye en el tamaño del archivo es además de las dimensiones la cantidad de colores que maneja, 2, 4, 8, 16 o 32 bits.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Copiar desktop

Publicado por Cristián (115 intervenciones) el 11/10/2003 02:25:03
Ha! ok... pero al copiar el escritorio y guardarlo como .BMP qué cantidad de colores tiene por default o como lo cambio al guardarlo?¡?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Copiar desktop

Publicado por Diego Romero (636 intervenciones) el 11/10/2003 21:25:57
Pues es una buena pregunta. Hay una propiedad en el objeto TBitmap llamada PixelFormat que controla eso, sería cuestión de verificarla al tomar un screenshot de la pantalla.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar