Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Gráficos (https://www.clubdelphi.com/foros/forumdisplay.php?f=8)
-   -   Intersectar BitMaps con Transparencia (https://www.clubdelphi.com/foros/showthread.php?t=32626)

Deiv 11-06-2006 16:43:29

INTERSECTAR BitMaps con Transparencia
 
Necesito mostrar un efecto de transparencia en la intersección de 2 BitMaps contenidos en dos distintas TImages (ó TPaintBox) como en Photoshop o algo así como tienen los TForms la propiedad AlphaBlend. He visto un programa llamado ClocX (http:clocx.fi.cz - http://www.clocx.tk) y este muestra esa transparencia de su reloj.

¿Habría forma de hacer que los BitMaps se muestren transparentes SOLO en la parte que se intersectan?.

Deiv 13-06-2006 19:32:14

Encontré algo, ¿que opinan de lo siguiente? con 2 TImage lado a lado contenidos en un TPanel y un Button:

Código Delphi [-]
var  blendmap:TBitmap; {El sostén para la segunda imagen por mezlar}
Código Delphi [-]
procedure TForm1.FormCreate(Sender: TObject);
begin
   Image1.Picture.LoadFromFile('D:\Imagen1.BMP');
   Image2.Picture.LoadFromFile('D:\Imagen2.BMP');
end;

procedure TForm1.Button1Click(Sender: TObject);
var  x,y: integer;
     c: TColor;
     r,g,b: byte;
     r1,g1,b1: byte;
     r2,g2,b2: byte;
     t: real;
begin
if not assigned(blendmap) then load14bBtnClick(sender)  //No hace falta
else  Image2.Picture.Bitmap.Assign(BlendMap);
  t:=1/2; 
  panel1.doublebuffered:=true;
  for x:=0 to Image1.Width-1 do
  begin
     for y:=0 to Image1.Height-1 do
     begin
       c := Image1.Canvas.Pixels[x,y];
       r1 := (c and $0000FF);
       g1 := (c and $00FF00) shr 8;
       b1 := (c and $FF0000) shr 16;
       c := Image2.Canvas.Pixels[x,y];
       r2 := (c and $0000FF);
       g2 := (c and $00FF00) shr 8;
       b2 := (c and $FF0000) shr 16;
       r := round( t*r1 + (1-t)*r2 );
       g := round( t*g1 + (1-t)*g2 );
       b := round( t*b1 + (1-t)*b2 );
       Image2.Canvas.Pixels[x,y] := r + g shl 8 + b shl 16
     end;
   end;
end;



Pero Yo deseo encarar esa transparencia solo en la parte que se Intersectan, tal vez debí plantear mi pregunta como SEMITRANSPARENCIA en la intersección:

Deiv 15-06-2006 16:39:14

Pensaba en el algoritmo siguiente: Colocar 2 TImage con diferentes BitMaps, estos ubicados en un 50% de intersección, calcular ese 50% de intersección con un TRect de la 1ra Imagen y el otro 50% de la 2da Imagen (llevando ambos a memoria), aplicar la Semi-transparencia solo a esta parte calculada con el código de arriba, es decir, dibujar nuevamente los BitMaps tal como son y la parte intersectada aplicar la semitransparencia redibujando.

El objetivo de mi pregunta era hacer mover 2 BitMaps y al intersectarse en cualquier posición verse estos con semitransparencia.

Deiv 22-06-2006 15:06:34

Encontré lo que buscaba, en la página http://www.delphirss.com/graphic.html (para aquellos que no conocen o estén interesados) además existen otros buenos ejemplos. A lo que me refería está en "Transparent bitmap brush" El segundo gráfico cuando está encima del primero se sobrepone (ya no es necesario transparentarlos) pero para que se cumpla ello el fondo de cada uno debe ser de igual color y aplicar la propiedad TransparentColor := clWhite (por ejemplo); y Transparent := True;

El código es muy grande ¿no habrá otra forma sencilla de realizar ese mismo proceso?

yeison Cristman 19-07-2006 20:07:35

DELPHI SQL y el DBImage1 ayudenme..!!!!
 
Tengo mi aplicacion para un colegio y quiero cargar la foto de cada estudiante tengo en mi tabla de sql llamada estudiante un campo llamado foto pero no se como hacer que se grabe la foto del estudiante. en mi formulario de delphi atraves del Query llame el campo foto y lo coloque en el formulario y le introduje el siguiente codigo. en el evento Onclik.

procedure TF_Estudiantes.DBImageClick(Sender: TObject);
begin
if OpenDialog_Estudiante.Execute then
begin
dbImage_Estudiante.Picture.LoadFromFile(OpenDialog_Estudiante.Filename);
Caption := OpenDialog_Estudiante.Filename;
end;

yo cargo la foto pero no se graba en la tabla de sql el campo foto es tipo image. donde esta el problema tengo poco tiempo por favor ayudeme alguien de foro.........!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!111


La franja horaria es GMT +2. Ahora son las 01:46:39.

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