Blur effect!!!

Blur effect!!!

Postby Bayron » Fri Sep 09, 2011 8:43 pm

He estado haciendo pruebas con el efecto de empañado, y funciona perfectamente en mi computador de escritorio, con Windows 7 y 4gb de Memoria, pero en mi laptop (Intel Centrino) y mi AllInOne (Atom), ambas con 2 Gb de Memoria y Windows XP, no me funciona correctamente, la mayoria del tiempo empaña 1 control, a veces 2 Controles, a veces 4, a veces mas y raras veces todos los controles....
Al parecer, esto se debe a que la funcion Blur no espera a que se pinten los controles del dialogo o ventana, para ejecutarse.....
He intentado a poner un Inkey(.5), pero al colocarlos, se detiene todo, incluyendo el pintado de la ventana y se produce el mismo efecto.....

Estoy utilizando ventanas tipo POP UP, por lo que quiero utilizar este efecto para diferenciar la ventana nueva de la anterior....

Algun comentario al respecto, o ayuda de como resolver el problema, les estare muy agradecido!!!!

Tengo una ventana POPUP con aproximadamente 70 controles, la mayoria BTNBMP's con 1 imagen.....

El codigo que uso para obtener el efecto es:

Code: Select all  Expand view
Function BlurEffect( oDialog )
  LOCAL hBmp
  LOCAL hBlur
 
  oDialog:GetDC()
 
  hBmp := MakeBkBmp( oDialog:hWnd , oDialog:hDC )
  hBlur := Blur( hBmp , 12 )
 
  PalBmpDraw( oDialog:hDC , 0 , 0 , hBlur )
 
  MsgInfo( "Probando Empañado de Pantalla..." )
  oDialog:refresh()
  DeleteObject( hBmp )
  DeleteObject( hBlur )

  oDialog:ReleaseDC()
 
return nil
 
=====>

Bayron Landaverry
(215)2226600 Philadelphia,PA, USA
+(502)46727275 Guatemala
MayaBuilders@gMail.com

FWH12.04||Harbour 3.2.0 (18754)||BCC6.5||UEstudio 10.10||
Windows 7 Ultimate

FiveWin, One line of code and it's done...
User avatar
Bayron
 
Posts: 815
Joined: Thu Dec 24, 2009 12:46 am
Location: Philadelphia, PA

Re: Blur effect!!!

Postby Andrés González » Sun Sep 11, 2011 11:09 am

Bayron disculpa, he querido probar el efecto Blur también para conseguir el efecto de que no sea una cosa inmediata y no se si lo hago bien. Si lo pongo en ON PAINT no me efectúa el efecto deseado.

Code: Select all  Expand view
 ACTIVATE DIALOG oDlg CENTERED ;
        ON PAINT BlurEffect(oDlg);
      VALID MsgYesNo( "Do you want to end ?" )
 


Si no dejo el mensaje tuyo (//MsgInfo...) no aprecio el efecto blur, en los dialogos. Si lo dejo funciona pero lo que me muestra es la imagen blur hasta que vuelvo a pulsar el mensaje tuyo y entonces se quita.

Pregunta: ¿No tendriamos que crear un delay e ir actualizando la concentración del blur hasta que fuera nula? No sé, es la primera prueba que hago pero no tengo ni idea.

Code: Select all  Expand view
#include "FiveWin.ch"

function Main()

   local oDlg, oIco, cTest := "Hello world!   "

   DEFINE ICON oIco FILE "fivewin.ico"

   DEFINE DIALOG oDlg TITLE "I am a DialogBox" COLOR "W+/B" ;
      ICON oIco

   @ 1, 3 GET cTest

   @ 3, 5 BUTTON "&Ok" SIZE 40, 12 ;
      ACTION BlurEffect(oDlg) DEFAULT

   @ 3, 16 BUTTON "&Cancel" SIZE 40, 12 ACTION oDlg:End()

   ACTIVATE DIALOG oDlg CENTERED ;
        ON PAINT BlurEffect(oDlg);
      VALID MsgYesNo( "Do you want to end ?" )

return nil

procedure AppSys // XBase++ requirement

return

Function BlurEffect( oDialog )
  LOCAL hBmp
  LOCAL hBlur

  oDialog:GetDC()

  hBmp := MakeBkBmp( oDialog:hWnd , oDialog:hDC )
  hBlur := Blur( hBmp , 12 )

  PalBmpDraw( oDialog:hDC , 0 , 0 , hBlur )

  //MsgInfo( "Probando Empañado de Pantalla..." )
  oDialog:refresh()
  DeleteObject( hBmp )
  DeleteObject( hBlur )

  oDialog:ReleaseDC()

return nil
 
Saludos

Andrés González desde Mallorca
User avatar
Andrés González
 
Posts: 628
Joined: Thu Jan 19, 2006 10:45 am
Location: Mallorca

Re: Blur effect!!!

Postby Andrés González » Sun Sep 11, 2011 11:23 am

Si pongo un for next, no me crea bien el efecto ya que solo lo hace en los controles que tiene el dialogo y no en todo el dialogo. ¿Alguien sabe como crear el efecto pero de todo el dialogo? Prueben de añadir el for next en el blur, cuando se pulsa ok, se muestra el efecto pero con un pequeño rebote al final. Bueno son ideas.

Code: Select all  Expand view
Function BlurEffect( oDialog )
  LOCAL hBmp, i
  LOCAL hBlur

  oDialog:GetDC()

  hBmp := MakeBkBmp( oDialog:hWnd , oDialog:hDC )

  FOR i := 1 TO 120

  hBlur := Blur( hBmp , 121 - i)

  PalBmpDraw( oDialog:hDC , 0 , 0 , hBlur )

  //MsgInfo( "Probando Empañado de Pantalla..." )
  oDialog:refresh()
  NEXT
    DeleteObject( hBmp )
  DeleteObject( hBlur )

  oDialog:ReleaseDC()

return nil
 
Saludos

Andrés González desde Mallorca
User avatar
Andrés González
 
Posts: 628
Joined: Thu Jan 19, 2006 10:45 am
Location: Mallorca

Re: Blur effect!!!

Postby Daniel Garcia-Gil » Sun Sep 11, 2011 12:09 pm

Bayron
prueba colocar un sysrefresh() antes de empezar el proceso del blur


Andres
oDialog:refresh() sacalo del FOR/NEXT
User avatar
Daniel Garcia-Gil
 
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 pm
Location: Isla de Margarita

Re: Blur effect!!!

Postby Bayron » Sun Sep 11, 2011 12:53 pm

Gracias Daniel, funcionó perfectamente!!! :D
=====>

Bayron Landaverry
(215)2226600 Philadelphia,PA, USA
+(502)46727275 Guatemala
MayaBuilders@gMail.com

FWH12.04||Harbour 3.2.0 (18754)||BCC6.5||UEstudio 10.10||
Windows 7 Ultimate

FiveWin, One line of code and it's done...
User avatar
Bayron
 
Posts: 815
Joined: Thu Dec 24, 2009 12:46 am
Location: Philadelphia, PA

Re: Blur effect!!!

Postby Bayron » Sun Sep 11, 2011 5:33 pm

Andres, intenta este codigo:

Code: Select all  Expand view
Function Main()

....
....
....
     ACTIVATE Window oDialog ;
        on Init ( BlurEffect( oDialog , .T. ), MsgInfo( "NNN" ), oDialog:Refresh(), BlurEffect( oDialog , .F. ) )

....
....
....

Return nil

Function BlurEffect( oDialog , ForWard)
  LOCAL hBmp, i
  LOCAL n := 25
  LOCAL hBlur

  oDialog:GetDC()

  hBmp := MakeBkBmp( oDialog:hWnd , oDialog:hDC )

  FOR i := 1 TO 25
 
  If( !ForWard, n := n - 1 , )
 
  hBlur := Blur( hBmp , If( ForWard, i , n ) )

  PalBmpDraw( oDialog:hDC , 0 , 0 , hBlur )

  NEXT
  //MsgInfo( "Probando Empañado de Pantalla..." )
  //oDialog:refresh()

  DeleteObject( hBmp )
  DeleteObject( hBlur )

  oDialog:ReleaseDC()

return nil
 
=====>

Bayron Landaverry
(215)2226600 Philadelphia,PA, USA
+(502)46727275 Guatemala
MayaBuilders@gMail.com

FWH12.04||Harbour 3.2.0 (18754)||BCC6.5||UEstudio 10.10||
Windows 7 Ultimate

FiveWin, One line of code and it's done...
User avatar
Bayron
 
Posts: 815
Joined: Thu Dec 24, 2009 12:46 am
Location: Philadelphia, PA


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: cmsoft, Google [Bot] and 97 guests