FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Blur effect!!!
Posts: 883
Joined: Thu Dec 24, 2009 12:46 AM
Blur effect!!!
Posted: Fri Sep 09, 2011 08: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 (fw): Select all Collapse
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
xBasePHP.com
(215)2226600 Philadelphia,PA, USA
MayaBuilders@gMail.com
Guatemala

FWH25.06--Harbour 3.0.0--BCC7.7--UEstudio 10.10
Windows 10

FiveWin, One line of code and it's done...

Posts: 632
Joined: Thu Jan 19, 2006 10:45 AM
Re: Blur effect!!!
Posted: 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 (fw): Select all Collapse
  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 (fw): Select all Collapse
#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
Posts: 632
Joined: Thu Jan 19, 2006 10:45 AM
Re: Blur effect!!!
Posted: 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 (fw): Select all Collapse
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
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 PM
Re: Blur effect!!!
Posted: 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

Posts: 883
Joined: Thu Dec 24, 2009 12:46 AM
Re: Blur effect!!!
Posted: Sun Sep 11, 2011 12:53 PM

Gracias Daniel, funcionó perfectamente!!! :D

=====>

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

FWH25.06--Harbour 3.0.0--BCC7.7--UEstudio 10.10
Windows 10

FiveWin, One line of code and it's done...

Posts: 883
Joined: Thu Dec 24, 2009 12:46 AM
Re: Blur effect!!!
Posted: Sun Sep 11, 2011 05:33 PM
Andres, intenta este codigo:

Code (fw): Select all Collapse
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
xBasePHP.com
(215)2226600 Philadelphia,PA, USA
MayaBuilders@gMail.com
Guatemala

FWH25.06--Harbour 3.0.0--BCC7.7--UEstudio 10.10
Windows 10

FiveWin, One line of code and it's done...

Continue the discussion