Jump to content

Recommended Posts

Apresento esta UDF chamada BackEffect, (back = para trás, effect = efeito).

 

Quando você cria um controle* com esta UDF é possível você adicionar um efeito para este controle.

 

Que tipo de efeito?

Ao deixar o mouse sobre o controle, você vai perceber uma caixa que irá mudando gradualmente da dor do background da janela para o verde.

 

Posso personalizar a cor?

Sim. O padrão da UDF é o verde, mas é possível definir qualquer outra cor.

 

Posso personalizar o tamanho da borda do efeito?

Sim. O default é 4.

 

Como funciona?

Quando você cria um controle* em uma GUI** a UDF lê o tamanho (largura e altura) do controle e cria um GUICtrlCreateLabel com um tamanho maior do que o seu controle (4 pontos maior, por default), e depois, posiciona esse controle por trás do controle principal.

E no momento que o mouse é posicionado sobre o seu controle principal, a UDF vai suavemente alterando a cor GUICtrlCreateLabel posicionada atrás do controle até a cor definida (verde, por default).

Ao retirar o mouse do controle principal, o processo inverso é realizado, isto é, a cor do GUICtrlCreateLabel vai suavemente do verde até a cor do background da GUI.

 

Requisitos:

A GUI criada necessita ter $WS_EX_COMPOSITED em seu $sStyle.

 

Restrições:

$WS_EX_COMPOSITED não funciona com GDIPLus+.

 

*Controles:

  • GUICtrlCreateLabel
  • GUICtrlCreateButton
  • GUICtrlCreateRadio
  • GUICtrlCreateGroup
  • GUICtrlCreateCheckbox
  • GUICtrlCreateCombo
  • GUICtrlCreateInput
  • GUICtrlCreateList

*GUI: Graphic User Interface ou simplesmente janela

 

https://github.com/chechelaky/AutoIt/tree/master/BackEffect

  • Like 1
  • Thanks 1

Share this post


Link to post
Share on other sites

@Luigi pelo que vc falou parece ter ficado muito legal só não consegui testar porquê ainda uso a versão 3.3.9.4 do Autoit!

Share this post


Link to post
Share on other sites

Gostei muito desse efeito, só não sei onde muda a cor e a expessura.

Vou deixar uma sugestão:

AddBack_Effect($aGui[0], $hControlLabel, $Cor, $Expessura)

Assim não seria preciso mudar manualmente dentro da udf

Share this post


Link to post
Share on other sites

@Sergio-F

 

Não precisa mudar dentro da udf, apenas informe ao chamar a função "__BackEffectStart()".

Func __BackEffectStart($hGui = 0, $iColorOver = 0x00FF00, $iDelay = 10, $iIncrement = 5)

Informe no segundo parâmetro a cor desejada.

 

Mas acho que está valendo também a tua sugestão e a incremento:

- Na function "__BackEffectStart()" informar a espessura da borda que seria padrão para todos.

- Na function "AddBack_Effect()" dar a possibilidade de informar uma cor em específica para o elemento.

  • Haha 1

Share this post


Link to post
Share on other sites

Hum... gostei das sugestões, acho que vou fazer a cor e a largura personalizada por controle, fica mais customizável né?

 

Mas respondendo a dúvida do @Sergio-F:

Global $iCorDoEfeito = 0xFFFF00 ; sempre neste formato
__BackEffectStart($aGui[0], $iCorDoEfeito) ; 

AddBack_Effect($aGui[0], $hControlLabel, 2) ; tamanho de borda 2
AddBack_Effect($aGui[0], $hControlButton, 4) ; tamanho de borda 4
AddBack_Effect($aGui[0], $hControlRadio, 6) ; tamanho de boarda 6
Edited by Luigi

Share this post


Link to post
Share on other sites

@Luigi,

 

Parabéns pela sua UDF! Gostei muito e me ajudou muito.

 

Só uma dúvida: eu consigo usar sua UDF pra elementos em uma página web ? Seria essencial ! O que acha ?

 

 

Israel

Share this post


Link to post
Share on other sites

Eu li o seu post aqui no fórum e no fórum americano, e pensei a respeito, acredito que impossível não é, mas você teria que ter uma UDF para IE, Firefox, Chrome, etc...

 

a] E envolveria uma matemática / algoritmo para interpretar e localizar onde está o elemento, seria quase como desenvolver um novo browser para destacar o elemento, mas um browser para rodar em background, só para fazer isso.

Pode ser que eu esteja errado e não tenha visto outra alternativa diante do meu nariz.

 

b] Mas o que eu acho mais fácil, é você desenvolver isso em JavaScript / JQuery (como disse o JhonOne) e submeter o elemento via AJAX para um server AutoIt (se for o caso).

 

A primeira opção, eu acho bastante trabalhosa.

A segunda opção, mais fácil.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


×