Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Gráficos (https://www.clubdelphi.com/foros/forumdisplay.php?f=8)
-   -   Pintar superficie poligono respetando relieve de la imgen de fondo (https://www.clubdelphi.com/foros/showthread.php?t=83180)

el-mono 20-05-2013 15:03:31

Pintar superficie poligono respetando relieve de la imgen de fondo
 
Buenos dias queridos compañeros.




asi es como queda mi prueba (Horrible):



Lo que necesito hacer es sobre es pintar una porcion de la superficie de una imagen como la que ven arriba, para ello lo que intente hacer es utilizando Regiones y por ultimo poligonos. El tema es que lo quepinta se nota mucho que es una figura (poligono, circunferencia) sobre la imagen y no como me gustaria (como esen la imagen que muestro arriba ) donde se nota (al menos yo lo veo asi ) que el color de relleno de la porcion de la imagen respeta el relieve.

Nota: Estoy trabajando con firemonkey primero para aprender y otra porque lo veo mas dirigido a este tipo de trabajos.

Pregunta:

Como puedo hacer para rellenar con un color un poligono dibujado sobre la imagen y que me respeta las ondulaciones de la superficie de la cara del diente ?


Espero se entiendami pregunta y desde ya muchas gracias.

Ñuño Martínez 22-05-2013 12:55:10

Suponiendo que no tienes acceso a la imagen en 3D, prueba con polígonos transparentes. Empieza con un 50% y ya lo vas subiendo o bajando según se vea. Ten en cuenta que no con todos los colores se verá igual con la misma transparencia.

el-mono 23-05-2013 02:05:37

Ñuño como es el tema de polígonos transparentes ? tenes algun ejemplillo de ello ?

Ñuño Martínez 30-05-2013 12:34:12

Hola, perdón por la tardanza pero es que me perdí. :(

No tengo ningún ejemplo a mano. Pensaba decirte que TShape tiene una propiedad de transparencia, pero veo que no es así (al menos, no en Lazarus). Tampoco veo transparencia ni canal alfa en las propiedades Pen y Brush, así que la cosa no es tan fácil como creía.

Si usaras una biblioteca gráfica, tal como OpenGL, Allegro o incluso SDL, ahí sí podría orientarte mejor y más fácilmente.

el-mono 30-05-2013 20:58:16

Si yo utilizara tu librería Allegro.pas vos decís que yo podría hacer algo similar ? como le puedo hacer ?

Ñuño Martínez 31-05-2013 16:42:51

Allegro permite definir modos de dibujo y colores e imágenes con canal alfa (transparencia) usando la unidad alblend, donde hay varias formas de definir las funciones que permiten hacerlo (al_set_trans_blender o al_set_alpha_blender, por ejemplo).

Un problema es que habría que hacerlo en un bitmap de Allegro (AL_BITMAPptr) y después pasarlo al canvas del componente donde dibujas (hay un ejemplo de cómo hacerlo junto al paquete, en "./examples/lazarus").

El otro es que la versión 4 no es compatible con Delphi. La versión 5 alpha1 sí lo es, pero las funciones de dibujo de esta se basan en OpenGL y resulta mejor usar esta biblioteca directamente sin pasar por Allegro.

Vamos, que es sencillo pero complicado a la vez, y porque si no has usado nunca Allegro ni OpenGL será bastante complicado.

DarkDudae 04-06-2013 11:18:26

A la mayoría de componentes de Firemonkey se les puede cambiar la propiedad de la opacidad. Creo recordar (hablo de memoria) que no es una propiedad al uso (es decir, que no puedes cambiarla simplemente con: Componente.Opacity:=0.5). Lo que sí estoy seguro es que podrías conseguir lo que buscas con el comando:

Código Delphi [-]

Componente.AnimateFloat('Opacity', 0.5, 0.75);


Ese código lo que haría sería cambiar la opacidad del componente a la mitad (0.5) en un tiempo de 0.75 segundos. Supongo que si pones un tiempo de 0 la cambiará directamente.

Probablemente esta propiedad pueda ser cambiada sin la necesidad de usar el FloatAnimation, pero lamentablemente en el equipo desde el que hablo no tengo las versiones con Firemonkey disponible.

Un saludo


La franja horaria es GMT +2. Ahora son las 00:50:20.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi