PDA

Ver la Versión Completa : Formas transparentes y algo más...


rolando_sd
11-09-2003, 20:22:26
Saludos Amigos foristas:

:confused: Tengo necesidad de vuestra ayuda; tengo que desarrollar una aplicación en la cual debo utilizar formas transparentes(Cómo puedo obtenerlas?), las que se solapen y ver dos gráficos arbitrarios uno en una forma y el otro de la otra, los cuales pueden coincidir o no; algún compañero ha hecho algo de lo que hablo o similar que me pueda ayudar?

Para obtener coincidencia o no de gráficos (digamos, manchas) debiera usar operadores lógicos?

Muchas gracias adelantadas
Un amigo
rolando_sd

delphi.com.ar
11-09-2003, 21:25:38
En WinXP y con Delphi 7 puedes crear formularios con transparencia REAL, con versiones anteriores lo que he hecho alguna vez, hacer que el form tenga una región irregular que sea una grilla, y da un efecto transparencia medio mentiroso.

Saludos!

Rudi
12-09-2003, 06:39:14
hola,

este codigo lo encontre hace algun tiempo en trucomania.

procedure TForm1.Button1Click(Sender: TObject);
var
frmRegion, tempRegion: HRGN;
i: Integer;
Arect: TRect;
begin
frmRegion := 0;
for I:= 0 to ControlCount - 1 do begin
aRect := Controls[i].BoundsRect;
OffsetRect( aRect, clientorigin.x - left, clientorigin.y - top );
tempRegion := CreateRectRgnIndirect( aRect );
if frmRegion = 0 then
frmRegion := tempRegion
else begin
CombineRgn( frmRegion, frmRegion, tempRegion, RGN_OR );
DeleteObject( tempRegion );
end;
end;
tempregion :=
CreateRectRgn( 0, 0, Width,
GetSystemMetrics( SM_CYCAPTION )+
GetSystemMetrics( SM_CYSIZEFRAME )+
GetSystemMetrics( SM_CYMENU ) * Ord(Menu <> Nil));

CombineRgn( frmRegion, frmRegion, tempRegion, RGN_OR );
DeleteObject( tempRegion );
SetWindowRgn( handle, frmRegion, true );
end;

funciona con delphi6 y win2000(lo acabo de probar), el problema es que no se como devolver el estado normal, es decir quitar la transparencia.

espero que te sirva.

delphi.com.ar
12-09-2003, 16:44:48
El código que te pasa Rudi es similar a la idea de crear una región en forma de grilla, solo que este crea una región con la forma de los componentes, lo que hace que el form sea 100% transparente

Posteado originalmente por Rudi
el problema es que no se como devolver el estado normal, es decir quitar la transparencia.
Prueba esto: SetWindowRgn(Handle, 0, True);

Saludos!

rolando_sd
12-09-2003, 17:58:37
Rudi y delphi.com.ar:
Mis saludos; realmente estoy preparándome para una tarea que debo comenzar en la 2da quincena del mes que viene, pero necesito desde ya las herramientas, lo que tengo hasta ahora es el delphi 5, que lo conseguí hace 10 días y la plataforma es windows 98, no sé si eso me servirá para comenzar a experimentar y lograr algún resultado, por lo pronto me comuniqué con www.borland.com y me facilitaron unas keys trial por 2 meses para usar el delphi 6. Veremos qué pasa...Salu2 y los quiero mucho, me han alumbrado bastante y espero recibir más ideas y aclaraciones de los demás amigos que deseen hacerlo. GRACIAS

Un amigo
rolando_sd

Rudi
12-09-2003, 18:40:52
Posteado originalmente por delphi.com.ar
Prueba esto: SetWindowRgn(Handle, 0, True);
Funciona a las mil maravillas, el que no sabe es como el que no vé.

seduerey
13-10-2003, 11:44:32
Acabamos de actualizar a Delphi 7 bajo W2000 profesional, pero no se donde esta para poner a los formularios la transparencia.

He visto transparentColor, pero no me parece que sea lo que busco....

¿Como le pongo una transparencia de menos del 100%?por ejemplo, esto al 30%

Gracias.

vichovi
17-10-2003, 21:49:15
Desde Delphi 6 (y por lo tanto en la 7) los formularios tienen la propiedad AlphaBlend, la cual si esta a true hace que nuestro formulario sea transparente en función al valor dado a la propiedad AlphaBlendValue; siendo 255 el valor por defecto (formulario normal, opaco), hasta 0 (formulario totalmente transparente).

Estas propiedades no tienen ningun resultado en W9x.

Un saludo.