Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Gráficos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 11-06-2006
Deiv Deiv is offline
Miembro
 
Registrado: jul 2005
Ubicación: La Paz - Bolivia
Posts: 364
Poder: 20
Deiv Va por buen camino
Unhappy 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?.

Última edición por Deiv fecha: 12-06-2006 a las 02:03:27.
Responder Con Cita
  #2  
Antiguo 13-06-2006
Deiv Deiv is offline
Miembro
 
Registrado: jul 2005
Ubicación: La Paz - Bolivia
Posts: 364
Poder: 20
Deiv Va por buen camino
Wink

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:
Responder Con Cita
  #3  
Antiguo 15-06-2006
Deiv Deiv is offline
Miembro
 
Registrado: jul 2005
Ubicación: La Paz - Bolivia
Posts: 364
Poder: 20
Deiv Va por buen camino
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.
Responder Con Cita
  #4  
Antiguo 22-06-2006
Deiv Deiv is offline
Miembro
 
Registrado: jul 2005
Ubicación: La Paz - Bolivia
Posts: 364
Poder: 20
Deiv Va por buen camino
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?
Responder Con Cita
  #5  
Antiguo 19-07-2006
yeison Cristman yeison Cristman is offline
Miembro
 
Registrado: jul 2006
Posts: 52
Poder: 19
yeison Cristman Va por buen camino
Red face 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
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Transparencia en labels .NET edalmasso .NET 0 11-04-2006 22:18:16
transparencia en un radiobutton Debian Gráficos 1 17-06-2005 17:35:27
Transparencia en bitmaps gringo Gráficos 2 23-10-2004 17:36:37
Iconos y bitmaps silviodp Gráficos 3 04-05-2004 19:05:34
Dudilla sobre bitmaps.... craven Gráficos 3 05-05-2003 22:40:30


La franja horaria es GMT +2. Ahora son las 01:04:53.


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
Copyright 1996-2007 Club Delphi