MMORPG Brasil
Ola, visitante! Agradecemos sua visita, para ter acesso a todo nosso conteúdo recomendamos que faça um cadastro no fórum, com ele você pode participar de tópicos e ter acesso a todas áreas da comunidade!

Participe do fórum, é rápido e fácil

MMORPG Brasil
Ola, visitante! Agradecemos sua visita, para ter acesso a todo nosso conteúdo recomendamos que faça um cadastro no fórum, com ele você pode participar de tópicos e ter acesso a todas áreas da comunidade!
MMORPG Brasil
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Criando Janelas Transparentes

+3
St4rk
Darkpeople196
Valentine
7 participantes

Página 1 de 2 1, 2  Seguinte

Ir para baixo

Criando Janelas Transparentes Empty Criando Janelas Transparentes

Mensagem por Valentine Sáb 12 Fev 2011, 22:20

A transparência é a capacidade de ser transparente, ou seja, de permitir
ver através, neste caso, do objecto. Esta transparência permite criar
formulários que deixam ver através dele, que abrem com um efeito fade in
(começar a aparecer até ficar opaco) ou fade out (do opaco ao
invisível). Estas são algumas aplicações possíveis, que para além de um
efeito bonito, melhoram o visual da aplicação.

O design de
uma aplicação é muito importante e o seu sucesso pode também ser o
sucesso da aplicação. Uma aplicação por muito boa que esteja
(funcional), dificilmente vende ou convence se não tiver um bom design.

Criando Janelas Transparentes Fade01

O
VB.NET já inclui esta propriedade nos Forms mas o VB6 não e para a
criarmos necessitamos de recorrer a alguns API’s. O API que permite este
efeito é o SetLayeredWindowAttributes() embora se utilizem outros
auxiliares, como é o caso das funções GetWindowLong() e SetWindowLong().

Para
tornarmos um form transparente necessitamos do seguinte código (embora
apenas seja usado o Sub MakeTransparent() e não o MakeOpaque() que
“apenas” transforma o form em opaco):

No módulo:

Código:
' Declaração de API's necessários
        Private Declare Function SetLayeredWindowAttributes Lib "user32"
 (ByVal hWnd As Long, ByVal crKey As Long, ByVal bAlpha As Byte, ByVal
dwFlags As Long) As Long

        Private Declare Function
GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long,
ByVal nIndex As Long) As Long

        Private Declare Function
SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long,
ByVal nIndex As Long, ByVal dwNewLong As Long) As Long

        ' Definição de constantes
        Private Const GWL_EXSTYLE = (-20)
        Private Const LWA_COLORKEY = &H1
        Private Const LWA_ALPHA = &H2
        Private Const ULW_COLORKEY = &H1
        Private Const ULW_ALPHA = &H2
        Private Const ULW_OPAQUE = &H4
        Private Const WS_EX_LAYERED = &H80000

        ' Define o Form como transparente
        Public Sub MakeTransparent(ByVal hWnd As Long, ByVal bAlpha As Integer)
            Dim msg As Long

            ' Ignora possíveis erros
            On Error Resume Next

            ' Caso o valor seja inferior a 255 e superior
            ' a 0 aplica uma nova transparência
            If bAlpha > 0 Or bAlpha < 255 Then

                msg = GetWindowLong(hWnd, GWL_EXSTYLE)
                msg = msg Or WS_EX_LAYERED
                SetWindowLong hWnd, GWL_EXSTYLE, msg   

                SetLayeredWindowAttributes hWnd, 0, bAlpha, LWA_ALPHA

            End If

        End Sub

        ' Define o form com opaco
        Public Sub MakeOpaque(ByVal hWnd As Long)
            Dim msg As Long   

            ' Ignora possíveis erros
            On Error Resume Next

            msg = GetWindowLong(hWnd, GWL_EXSTYLE)
            msg = msg And Not WS_EX_LAYERED
            SetWindowLong hWnd, GWL_EXSTYLE, msg

            SetLayeredWindowAttributes hWnd, 0, 0, LWA_ALPHA

        End Sub

Depois, na inicialização do Form:

Código:
Private Sub Form_Initialize()

            MakeTransparent Me.hWnd, 150

        End Sub

O valor a indicar pode variar entre 0 e 255, onde 0 é o máximo de transparência.

Este
exemplo mostra como iniciar um Form transparente, mas pode-se criar um
efeito mais interessante onde o Form começa a aparecer até ficar opaco –
fade in. Para criar este efeito é apenas necessário adicionar um Timer
ao Form e utilizar o seguinte código:

Código:
' Variável que irá guardar o valor da transparência
        Private i As Integer

        ' Inicializa o form como transparente
        Private Sub Form_Initialize()

            MakeTransparent(Me.hWnd, 0)

        End Sub

        ' No intervalo definido
        Private Sub Timer1_Timer()

            ' Incrementa o valor da transparência
            i = i + 10

            ' Caso não tenha atingido 255 define nova
            ' transparência, caso contrário pára o timer
            If i <= 255 Then
                MakeTransparent(Me.hWnd, i)
            Else
                Timer1.Enabled = False
            End If

        End Sub

        ' Definição do intervalo do timer e inicialização
        Private Sub Form_Load()
            Timer1.Interval = 100
            Timer1.Enabled = True
        End Sub

Outra
das aplicações que esta função permite, com umas pequenas alterações, é
dizer que apenas uma cor ficará transparente. Ora isto permite colocar
um controlo dentro do form e dizer que este é transparente criando uma
janela ou um formato diferente.

Criando Janelas Transparentes Fade02

Um
exemplo engraçado para mostrar a sua implementação é criar algo
parecido com um queijo. É apenas necessário colocar umas shapes no Form,
formatá-las e definir no Form BorderStyle = None. Depois o código:

Código:
Private Sub Form_Load()
            Dim ctrl As Control

            ' Definição de todas as shapes do Form com o fundo a
            ' verde, estilo opaco e com os limites a transparente
            For Each ctrl In Me.Controls

                If TypeOf ctrl Is Shape Then
                    ctrl.BackStyle = 1
                    ctrl.BackColor = vbGreen
                    ctrl.BorderStyle = 0
                End If

            Next

            ' Chamar a função que irá colocar
            ' tudo o que é verde como transparente
            MakeTransparent Me.hWnd, 0

        End Sub

Finalmente
no Sub MakeTransparent() alterar a seguinte linha, de modo a
transformar tudo o que está a verde (vbGreen) em invisível.

De:

Código:
SetLayeredWindowAttributes hWnd, 0, bAlpha, LWA_ALPHA

Para:

Código:
SetLayeredWindowAttributes hWnd, vbGreen, bAlpha, LWA_COLORKEY

São pequenos exemplos de como usar a transparência nos Forms e como criar alguns efeitos interessantes.

Se não entendeu a aula, você pode baixar as demos que eu fiz
Tirando Cor de Fundo da Janela
Cor Transparente

Deixando a janela transparente
Janela Transparente

Retirado do site:
Vbtuga Blogspot


Última edição por Marlos Gama em Qua 16 Fev 2011, 11:24, editado 2 vez(es)
avatar
Valentine
Membro de Honra
Membro de Honra

Mensagens : 472

http://www.aldeiarpgbr.com

Ir para o topo Ir para baixo

Criando Janelas Transparentes Empty Re: Criando Janelas Transparentes

Mensagem por Valentine Sáb 12 Fev 2011, 22:21

So para explicar eu sei que ja existem alguns tutoriais como esse aqui no forum, só que achei mal explicados e esse está bem explicado e tem até demo

Créditos a mim por postar e criar as demos que estão no tópico, eu so to tentando ver se da pra criar uma janela dentro da form e deixar apenas essa janela transparênte
avatar
Valentine
Membro de Honra
Membro de Honra

Mensagens : 472

http://www.aldeiarpgbr.com

Ir para o topo Ir para baixo

Criando Janelas Transparentes Empty Re: Criando Janelas Transparentes

Mensagem por Darkpeople196 Sáb 12 Fev 2011, 22:31

bom vou lér com calma o tutorial e testar mesmo assim parece muito bem organizado
Darkpeople196
Darkpeople196
Membro Vitalicio
Membro Vitalicio

Mensagens : 612

Ir para o topo Ir para baixo

Criando Janelas Transparentes Empty Re: Criando Janelas Transparentes

Mensagem por St4rk Dom 13 Fev 2011, 06:51

Lag vai comer.
St4rk
St4rk
Membro de Honra
Membro de Honra

Mensagens : 2251

http://mylittledev.wordpress.com

Ir para o topo Ir para baixo

Criando Janelas Transparentes Empty Re: Criando Janelas Transparentes

Mensagem por Valentine Dom 13 Fev 2011, 09:21

OmegaZero escreveu:Lag vai comer.
Porque?
avatar
Valentine
Membro de Honra
Membro de Honra

Mensagens : 472

http://www.aldeiarpgbr.com

Ir para o topo Ir para baixo

Criando Janelas Transparentes Empty Re: Criando Janelas Transparentes

Mensagem por DshFox Dom 13 Fev 2011, 09:36

marlos,tenso eh as forms..
imagina quantas ..

eh muito melhor a transparencia de picture
se tu achar uma simples,posta ae Very Happy

soh achei umas toscas complicadas
DshFox
DshFox
Membro Vitalicio
Membro Vitalicio

Mensagens : 614

Ir para o topo Ir para baixo

Criando Janelas Transparentes Empty Re: Criando Janelas Transparentes

Mensagem por Valentine Dom 13 Fev 2011, 09:38

Eu sei que é ruim transparência em toda form e nunca vi ninguem usando isso, mais eu to tentando colocar transparências só nas pictures box e esse tuto ja é uma iniciativa

E eu queria ver se consido essa segunda parte de apagar a cor, sem apagar a form
avatar
Valentine
Membro de Honra
Membro de Honra

Mensagens : 472

http://www.aldeiarpgbr.com

Ir para o topo Ir para baixo

Criando Janelas Transparentes Empty Re: Criando Janelas Transparentes

Mensagem por Ian Dom 13 Fev 2011, 14:03

E ñ aconselho uzar efeitos Traslucidos nas froms pq vai dar bastante lag mesmo asim Bom tutorial 1+ Cred esse achar de picture box traslucido posta ai pq eu fiz 1 aki com Alpha bleding e api Nojento aki meu ping era de 5 foi pra 150 =/
Ian
Ian
Membro Veterano
Membro Veterano

Mensagens : 1238

Ir para o topo Ir para baixo

Criando Janelas Transparentes Empty Re: Criando Janelas Transparentes

Mensagem por St4rk Dom 13 Fev 2011, 17:00

Meu Alpha blender de imagem é bem rox (y).
St4rk
St4rk
Membro de Honra
Membro de Honra

Mensagens : 2251

http://mylittledev.wordpress.com

Ir para o topo Ir para baixo

Criando Janelas Transparentes Empty Re: Criando Janelas Transparentes

Mensagem por Ian Dom 13 Fev 2011, 17:50

Posta ae Omega O Teu Alpha Bleding de Picture Box (zuera eu Sei Que voce ñ posta mesmo Criando Janelas Transparentes 256397 )

Esse na from acho que da menos lag

Spoiler:

Esse Codigo Colocar na From no lugar de todo esse codigo do tutorial asim He he ^^
Ian
Ian
Membro Veterano
Membro Veterano

Mensagens : 1238

Ir para o topo Ir para baixo

Criando Janelas Transparentes Empty Re: Criando Janelas Transparentes

Mensagem por V-Force Dom 13 Fev 2011, 20:26

Bom kde a tag?, tem até amanham pra arrumar...
V-Force
V-Force
Administrador V-Force
Administrador V-Force

Mensagens : 933

Ir para o topo Ir para baixo

Criando Janelas Transparentes Empty Re: Criando Janelas Transparentes

Mensagem por Valentine Ter 15 Fev 2011, 14:16

V-Force escreveu:Bom kde a tag?, tem até amanham pra arrumar...
o que? não entendi
avatar
Valentine
Membro de Honra
Membro de Honra

Mensagens : 472

http://www.aldeiarpgbr.com

Ir para o topo Ir para baixo

Criando Janelas Transparentes Empty Re: Criando Janelas Transparentes

Mensagem por Ian Qua 16 Fev 2011, 11:17

Tag Seria Quando Voce Vai fazer 1 post de tutorial e colocar [EO] se for so para Eclipse Origins ou [ALL] se o tutorial for feito no ORigins e Funcionar para todas outras engines
Ian
Ian
Membro Veterano
Membro Veterano

Mensagens : 1238

Ir para o topo Ir para baixo

Criando Janelas Transparentes Empty Re: Criando Janelas Transparentes

Mensagem por SkyZero Qua 16 Fev 2011, 11:26

http://www.mmorpgbr.com/t1080-forms-transparentes

Créditos por Copiar do site
http://vbtuga.blogspot.com/2008/07/vb6-forms-transparentes.html

Apoio Omega vai da Lag , porem não acho que precise do Alpha use a propia Função do Direct X

Set Surf = DD.CreateSurfaceFromFile(FileName, SurfDesc)
Call SetMaskColorFromPixel(Surf, 0, 0)
Depois só direcionar o FileName , Acho que vai da menos Lag que por aquele monte de Code . Caso estará errado me corrijam .
SkyZero
SkyZero
Membro Veterano
Membro Veterano

Mensagens : 890

Ir para o topo Ir para baixo

Criando Janelas Transparentes Empty Re: Criando Janelas Transparentes

Mensagem por St4rk Qua 16 Fev 2011, 12:30

Bom eu vou modificar o EO2.0 e por um sistema de chat novo(via gui) com Alpha Blender(Imagem) e mostro para vocês, se vocês se interessarem, posso vender o código completo (y).
St4rk
St4rk
Membro de Honra
Membro de Honra

Mensagens : 2251

http://mylittledev.wordpress.com

Ir para o topo Ir para baixo

Criando Janelas Transparentes Empty Re: Criando Janelas Transparentes

Mensagem por Ian Qua 16 Fev 2011, 13:51

A Com alpha bleding e paia Faiz Com Dx8 com alpha bleding tem uma versão do Eo gratis no forum do Robin


Última edição por Ian em Qua 16 Fev 2011, 18:32, editado 1 vez(es)
Ian
Ian
Membro Veterano
Membro Veterano

Mensagens : 1238

Ir para o topo Ir para baixo

Criando Janelas Transparentes Empty Re: Criando Janelas Transparentes

Mensagem por St4rk Qua 16 Fev 2011, 14:38

Entendi porra nenhuma do que você falo.
St4rk
St4rk
Membro de Honra
Membro de Honra

Mensagens : 2251

http://mylittledev.wordpress.com

Ir para o topo Ir para baixo

Criando Janelas Transparentes Empty Re: Criando Janelas Transparentes

Mensagem por Ian Qua 16 Fev 2011, 16:26

Eu falei que no Forum Official do Robin ja tem uma versão do Origins Utilizando Alpha Bleding na Picture box gratis e com Soucer e falei por que voce não faiz uma de picture box traslucida uzando dx8 e vende
Ian
Ian
Membro Veterano
Membro Veterano

Mensagens : 1238

Ir para o topo Ir para baixo

Criando Janelas Transparentes Empty Re: Criando Janelas Transparentes

Mensagem por SkyZero Qua 16 Fev 2011, 17:42

A Questão não é por Dx8 , Dx8 tem muitos problemas " eu considero como Problemas " os Graficos tem que ser mutiplos de 2 , o Alpha Bleding é a melhor opção não precisa ser a opção do robim que ele liberou , é só procurar por umas mais avançadas .

@Edit

Mas também tem seus aproveitos como Direct3D que é um Otimo API que você Poderia fazer isso facilmente , O Direct3D
é uma parte da API DirectX O Direct3D é usado para renderizar gráficos 3D em aplicações onde a performance é importante, como em jogos, ele também permite os programas serem executados em tela cheia e não apenas em janelas. Se a placa de vídeo possuir aceleração por hardware a biblioteca utiliza-a de forma a reduzir o trabalho da CPU.
O Direct3D é uma API 3D, o que significa que ela é possui diversos comandos para a renderização tridimensional. No entanto, desde a versão 8 da biblioteca, ele substituiu o DirectDraw e passou renderizar também gráficos 2D.
Uma alternativa ao Direct3D é a API OpenGL.

Mas O OpenGL Não é muito voltada para jogos .
O OpenGL (Open Graphics Library) é uma API livre utilizada na computação gráfica, para desenvolvimento de aplicativos gráficos, ambientes 3D, jogos, entre outros.

O Direct3D tem 2 Suportes :
D3DX : possui um conjunto de ferramentas matemáticas, manuseio das matrizes do sistema, compilação e montagem de shaders, etc. Também possui funções que possibilitam operações complexas sobre malhas poligonais.
DXUT : projetada para ajudar o programador com tarefas mais básicas como criação de janelas, criação de um dispositivos, processamento das mensagens do Windows e eventos. É útil para o desenvolvimento de Programas de menor porte como demonstrações e tutoriais.

Só para complementar o Conhecimento
Shaders é Uma Unidade de processamento gráfico
conhecido também como VPU ou unidade de processamento visual, é o nome dado a um tipo microprocessador especializado em processar gráficos em computadores pessoais, estações de trabalho ou videogames. VPUs modernas manipulam gráficos computadorizados com eficiência e sua estrutura de processamento paralelo os tornam mais capazes neste tipo de trabalho que CPUs normais.
Falando por cima o Shaders " VPUs " é um acelerador de Gráficos .


Última edição por SkyZero em Qua 16 Fev 2011, 18:19, editado 3 vez(es) (Motivo da edição : Conclusões melhores.)
SkyZero
SkyZero
Membro Veterano
Membro Veterano

Mensagens : 890

Ir para o topo Ir para baixo

Criando Janelas Transparentes Empty Re: Criando Janelas Transparentes

Mensagem por St4rk Qua 16 Fev 2011, 19:07

DX8, para tirar o troço do 2 tenque criar um comandozinho lá, mó putaria, fiquei com raiva e nem tentei.


2º O Meu alpha blender é rox Fikdik /
St4rk
St4rk
Membro de Honra
Membro de Honra

Mensagens : 2251

http://mylittledev.wordpress.com

Ir para o topo Ir para baixo

Criando Janelas Transparentes Empty Re: Criando Janelas Transparentes

Mensagem por SkyZero Qua 16 Fev 2011, 19:17

É o mesmo que eu tenho omega ? ou é outro diferente mais avançado ?
SkyZero
SkyZero
Membro Veterano
Membro Veterano

Mensagens : 890

Ir para o topo Ir para baixo

Criando Janelas Transparentes Empty Re: Criando Janelas Transparentes

Mensagem por Valentine Qua 16 Fev 2011, 20:46

SkyZero escreveu:http://www.mmorpgbr.com/t1080-forms-transparentes

Créditos por Copiar do site
http://vbtuga.blogspot.com/2008/07/vb6-forms-transparentes.html

Apoio Omega vai da Lag , porem não acho que precise do Alpha use a propia Função do Direct X

Set Surf = DD.CreateSurfaceFromFile(FileName, SurfDesc)
Call SetMaskColorFromPixel(Surf, 0, 0)
Depois só direcionar o FileName , Acho que vai da menos Lag que por aquele monte de Code . Caso estará errado me corrijam .
Brother é por isso que eu coloquei isso no final do tópico
Retirado do site:
Vbtuga Blogspot

@Tópico
Eu sei que o alpha que eu tenho aqui e está/estava no forum do robin o chat fica transparente e piscando oO, achei estranho essa parte de piscar

todos os alphas as janelas piscam?
avatar
Valentine
Membro de Honra
Membro de Honra

Mensagens : 472

http://www.aldeiarpgbr.com

Ir para o topo Ir para baixo

Criando Janelas Transparentes Empty Re: Criando Janelas Transparentes

Mensagem por Ian Qui 17 Fev 2011, 07:29

Não Piscam esse Problema esta no Loop eu ja Resolsi parece que ele ficava piscando pra tipo atualizar alguma coisa

Omega zero esse seu alpha bleding ae e rox mesmo igual ao do Robin que não da lag nem a Pall??
Ian
Ian
Membro Veterano
Membro Veterano

Mensagens : 1238

Ir para o topo Ir para baixo

Criando Janelas Transparentes Empty Re: Criando Janelas Transparentes

Mensagem por DshFox Qui 17 Fev 2011, 08:56

alguem passa o link do EO do robin com dx8 ou alpha n sei oq ae
DshFox
DshFox
Membro Vitalicio
Membro Vitalicio

Mensagens : 614

Ir para o topo Ir para baixo

Criando Janelas Transparentes Empty Re: Criando Janelas Transparentes

Mensagem por Ian Qui 17 Fev 2011, 09:55

DshFox essa versão do Origins foi feita pelo Robin mais foi modificada por 1 membro do forum e o Alpha bleding tem alguns probleminhas que da pra resolver o loop e algusn packs que dão 1 pouco menos de fps pra tua engine e ta ae o link Link Para Download Aki
Ian
Ian
Membro Veterano
Membro Veterano

Mensagens : 1238

Ir para o topo Ir para baixo

Criando Janelas Transparentes Empty Re: Criando Janelas Transparentes

Mensagem por Conteúdo patrocinado


Conteúdo patrocinado


Ir para o topo Ir para baixo

Página 1 de 2 1, 2  Seguinte

Ir para o topo

- Tópicos semelhantes

 
Permissões neste sub-fórum
Não podes responder a tópicos