• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

nitoc3

Control transparente ao rato

5 mensagens neste tópico

Tenho um panel com uma picturebox dentro e queria que a picturebox fosse transparente ao rato de forma a que quanto o rato está sobre ela sejam na verdade os eventos do panel que sejam chamados, no fundo que a picturebox se comportasse como se não estivesse lá.

Dá para fazer isso? Como posso fazer?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

epá nao estou a perceber bem, mas plo q percebi tu queres que quando o rato está sobre a picturebox a picturebox fique transparente right?

nos eventos da picturebox tens um evento chamado MouseHover....mas visto a pictureBox não ter nenhuma propriedade de Opacity(transparencia) vais ter que arranjar uma imagem transparente e depois no mousehover mudas a imagem para a transparente com:

this.pictureBox1.Image = ((System.Drawing.Image)(resources.GetObject("pictureBox1.Image")));

è a unica maneira que estou a ver.....tb tentei com containers para ver se eles tinham opacity mas não :S

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
nos eventos da picturebox tens um evento chamado MouseHover....mas visto a pictureBox não ter nenhuma propriedade de Opacity(transparencia) vais ter que arranjar uma imagem transparente e depois no mousehover mudas a imagem para a transparente com:

this.pictureBox1.Image = ((System.Drawing.Image)(resources.GetObject("pictureBox1.Image")));

Nope, não é isso que eu quero, o que eu quero é que a picturebox fique invisível ao rato, não que fique invisível no ecrã, de forma a que, por exemplo, o evento mousehover a ser accionado seja o do panel e não o da picturebox...

Mas já consegui contornar o problema de outra forma, desenhei a imagem directamente no panel e eliminei a picturebox.

De qualquer maneira gostava de saber se era possível fazer isso com um control.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não experimentei a ver se funcionava. Mas assim de imediato, punha a apanhar o evento na pictureBox e a despoletar o mesmo evento no panel manualmente. Mas o mais provável é dar para redireccionar os eventos dos controlos filhos para o controlo pai automaticamente.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Também experimentei isso, mas isso provoca que o evento seja chamado duas vezes, uma quando entra no controlo pai e outra quando entra no controlo filho o que pode provocar um comportamento indesejado.

Por exemplo, se o panel tiver um gradiente e se fizer inverter as cores do gradiente no mouseenter e mouseleave quando o rato entra em cima da picturebox, apesar de o rato ainda estar "em cima do panel" é chamado o evento mouseleave do panel, e é isso mesmo que eu não queria que acontecesse.

Simplificando, se por exemplo quando o rato entra em cima do panel eu o definir para ficar azul, e quando sai para ficar verde, quando o rato está em cima da picturebox o panel fica verde, e eu queria que continuasse azul...

Com uma cor só eu podia chamar o evento do panel manualmente e não haveria grandes problemas, mas quando se trabalha com um gradiente já não funciona tão bem, e no caso de o evento chamar outro pedaço de código vai executar duas vezes o mesmo código o que pode não ser o desejado.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora