PDA

Ver la Versión Completa : Como combinar transparencias con efectos opacos ?


rolandoj
10-04-2013, 06:51:10
Hola a todos,

Agradecerìa si me pudieran dar una ayuda con el siguiente problema :

Tengo una imagen de fondo sobre un TImage. Necesito colocar un panel en el centro que contendrá varios controles. Este panel ocupa una pequeña región de la imagen de fondo. Necesito que el panel sea transparente; pero, que el área transparente quede opaca.

Ya modifiqué el componente TPanel para que sea transparente. Eso me funciona bien. También encontré un método para hacer una imagen opaca y me funciona bien; así que mi idea para lograr el efecto requerido ha sido la siguiente :

Generar una área opaca en la imagen de fondo usando la posición Left,Top del panel y su dimensiones (Width, Height). Eso lo implemento en el Resize para restaurar el área en cada resize antes de posicionar el TPanel e inmediatamente opacar la nueva área.

Ahí es donde tengo un problema porque el área opaca no coincide con el Panel. Verticalmente si es más o menos la misma (tanto en su posición Top como en su altura); pero, no coincide. Horizontalmente es también más o menos el mismo ancho; pero, la posición izquierda es mucho antes que la del panel.

Tal parece que por debajo hay un manejo a escala de coordenadas (un poco raro porque está muy desfasado a la izquierda, no parece escala natural). Debido a eso, las propiedades Left, Top, Width y Height del Panel no corresponden exactamente a un rectángulo definido así en la imagen de fondo.

Alguna idea de como solucionar este impasse ?

Ñuño Martínez
10-04-2013, 16:57:24
Veo una pequeña contradicción: Necesito que el panel sea transparente; pero, que el área transparente quede opaca. Es imposible que un área transparénte quede opaca. O eso, o es que he saltado de dimensión espaciotemporal y no me he enterado. :rolleyes:

De todas formas, y volviendo a tu pregunta, ¿has probado las propiedades Anchor?

rolandoj
10-04-2013, 21:55:01
Hola Ñuño,

Muchas gracias por contestar.

Disculpa. Ciertamente las palabras a veces pueden significar una cosa para unos y otra para otros.

La frase "Necesito que el panel sea transparente; pero, que el área transparente quede opaca." para mi está bien porque un área la entiendo como única; aún cuando sobre la misma existan varias capas de imágenes superpuestas. Así, cuando hablo de el "área transparente" para mi estoy hablando del área que está delimitada por los efectos de la transparencia, y es algo que entiendo implícito en la frase. Por lo que veo, tú consideras que eso no se entiende implícitamente sino que se debe indicar explícitamente.

Para claridad, lo que estoy diciendo es esto :

1. Imaginemos una imagen con un ancho de 1000 y un alto de 600
2. En esa imagen pensemos en un área centrada de 400 por 300
3. Esa área quedaría entonces con Left 300 y Top 150
4. Sobre esa área apliquemos un efecto opaco.
5. Ahora, tomemos un Panel de 400 por 300 y ubiquemoslo exactamente encima del área
6. Ese panel hagamoslo transparente (eso debe hacer que se vea el ópaco aplicado abajo)
7. Finalmente, sobre el mismo panel se colocan otros controles.

Ese es el efecto que necesito y que más o menos he logrado.

Ahora, el problema no son los Anchor porque lo que se descuadra no es el panel (que centra bien) sino la capa de opaco; es decir, aún cuando estoy colocandole, a la rutina que genera el opaco, directamente el tamaño y las coordenadas de Left-Top del panel ya centrado (verificado con depurador e incluso con ShowMessage) sigue apareciendo notablemente desfasada respecto a la posición correcta.

Para mi, el problema debe ser algún tipo de conversión de sistema de coordenadas que hay que aplicar; pero, no se como se aplica. Lo que me imagino es que de alguna forma estoy trabajando sobre las dimensiones originales de la imagen de fondo, y que el Strech a True que uso para ajustar esa imagen es el que está deformando la situación. Tengo el día ocupado; pero, en cuanto pueda voy a trabajar esa idea.

Alguna otra idea ?

Saludos

Chris
10-04-2013, 22:02:30
Lo que me imagino es que de alguna forma estoy trabajando sobre las dimensiones originales de la imagen de fondo, y que el Strech a True que uso para ajustar esa imagen es el que está deformando la situación.

Strech es precisamente lo que debe estar dandote el problema. Aunque en un principio quedé con la misma duda de Ñuño. Supongo que debe ser algun efecto o textura la que estás aplicando a la imagen en la región dónde debe aparecer el TPanel. Si es así, no sería mejor colocar en el TPanel la textura?

Saludos!

rolandoj
10-04-2013, 22:47:21
Strech es precisamente lo que debe estar dandote el problema. Aunque en un principio quedé con la misma duda de Ñuño. Supongo que debe ser algun efecto o textura la que estás aplicando a la imagen en la región dónde debe aparecer el TPanel. Si es así, no sería mejor colocar en el TPanel la textura?

Saludos!
Hola Chris,

Gracias por el aporte.

Yo también tuve esa idea al principio; pero, no veo como hacerlo porque la transparencia y el opaco se manejan con técnicas separadas, y además entiendo que hay varias alternativas para implementarlas.

Tendría que empezar por explicarles los mètodos que estoy usando para lograr esos efectos, los cuales,a simple vista me parecen incompatibles y por lo que dijo Ñuño, parece que no se puede lograr el efecto en una sola capa de imagen.

Creo que debe ser más simple el ajustar el sistema de coordanadas para soportar el efecto del Strech; pero, habría que verlo.

Muchos saludos

nicolasjavier
19-08-2014, 02:03:48
Hola, me podrías decir como se hace que el Tpanel sea transparente???:confused::confused:

Gracias!!

Casimiro Notevi
19-08-2014, 10:06:51
Por favor, haz una búsqueda en los foros y si no encuentras la respuesta, crea un nuevo hilo con tu pregunta.
No olvides la guía de estil (http://www.clubdelphi.com/foros/guiaestilo.php)o, gracias ^\||/