Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 20-01-2010
rufo rufo is offline
Miembro
 
Registrado: jul 2006
Posts: 240
Poder: 18
rufo Va por buen camino
Red face Necesito componente que imprima imagenes PNG

Hola amigos he estado buscando en todo el foro un componente que me permita imprimir imagenes PNG con su transparencia Alpha ya que tengo los componentes PNGcomponents pero no hay un componente que me imprima dichas imagenes ya que cuando las quiero imprimir me manda un fondo negro ya que estoy haciendo credenciales y quiero imagenes sin fondo blanco, bueno espero que me auxilien y gracias de antemano.

Uso delphi 5 o haber que me recomiendan ustede y gracias de nuevo.
Responder Con Cita
  #2  
Antiguo 20-01-2010
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.934
Poder: 27
delphi.com.ar Va por buen camino
Para cargar este tipo de archivos, respetando el alpha channel en Win32 utilizo la librería pngImage. Lo interesante es que se registra como un TGraphic, y puedes utilizarlo en cualquier tipo de componente que utilice un TPicture, incluyendo QuickReports. La mala noticia que tengo es que acabo de hacer una prueba y veo que QuickReports pone todo lo que tiene Alpha en negro, así que se me ocurre preguntarte:

¿Este gráfico tendrá tranparencia sobre algo sólido?... porque de no ser así, lo que te va a convenir es trabajar con BMP de fondo blanco, ya que en la impresora el blanco no se imprime. Al decir esto no digo que tus imágenes originariamente tengan que tener fondo blanco, sino que te encargues de copiar y hacer la composición "a mano" de las imágenes, por ejemplo:

Código Delphi [-]
function Flatten(AGraphic: TGraphic; ABackColor: TColor = clWhite): TBitmap;
begin
  Result := TBitmap.Create;
  with Result do
  begin
    Width := AGraphic.Width;
    Height := AGraphic.Height;

    Canvas.Brush.Color := ABackColor;
    Canvas.FillRect(Rect(0, 0, Width, Height));

    Canvas.Draw(0, 0, AGraphic);
  end;
end;

Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.

Última edición por delphi.com.ar fecha: 20-01-2010 a las 17:40:25.
Responder Con Cita
  #3  
Antiguo 20-01-2010
rufo rufo is offline
Miembro
 
Registrado: jul 2006
Posts: 240
Poder: 18
rufo Va por buen camino
Si de hecho si tengo que imprimir con un colo solido de fondo.
Responder Con Cita
  #4  
Antiguo 20-01-2010
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.934
Poder: 27
delphi.com.ar Va por buen camino
Cita:
Empezado por rufo Ver Mensaje
Si de hecho si tengo que imprimir con un colo solido de fondo.
Si es un color sólido puedes utilizar la función que escribí para este hilo, si se trata de un solo color simplemente como está utilizando el segundo parámetro de ésta. Si lo dibujas sobre otra imagen, con el mismo criterio puedes introducir esta imagen dentro de la otra antes, utilizando los métodos Draw, CopyRect o bien la winapi StretchBlt.

Si quieres te armo un ejemplito.

Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #5  
Antiguo 20-01-2010
rufo rufo is offline
Miembro
 
Registrado: jul 2006
Posts: 240
Poder: 18
rufo Va por buen camino
Gracias pero la verdad ando un poco verde en esto y si me pudieras explicar en que parte del reporte lo pongo el codigo que escribiste te lo agradeceria muchisimo.
Responder Con Cita
  #6  
Antiguo 20-01-2010
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.934
Poder: 27
delphi.com.ar Va por buen camino
Ok!.. nunca me confirmaste si se trata de un QuickReports, pero supongo que si:

Las bandas tienen un evento llamado BeforePrint, si esta imagen cambia cada vez que se reimprime la banda, este sería el lugar, pero si no cambia nunca en todo el reporte, puedes asignar el gráfico cuando lo creas o en el evento BeforePrint del reporte, por ejemplo:

Código Delphi [-]
procedure TrptTarjeta.QuickRepBeforePrint(Sender: TCustomQuickRep;
  var PrintReport: Boolean);
var
  P: TPicture;
begin
  if FileExists(ChangeFileExt(Application.ExeName, '.bmp')) then
    qriLogo.Picture.LoadFromFile(ChangeFileExt(Application.ExeName, '.bmp'))

  else if FileExists(ChangeFileExt(Application.ExeName, '.png')) then
  begin
    P := TPicture.Create;
    try
      P.LoadFromFile(ChangeFileExt(Application.ExeName, '.png'));
      qriLogo.Picture.Assign(Flatten(P.Graphic));
    finally
      P.Free;
    end;
  end;
end;


Faltaría fundir la imagen sobre otra de ser necesario.

Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
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
necesito componente cmm07 Varios 10 22-01-2009 02:29:48
Necesito imagenes bmp e ico ... Gbyte Gráficos 1 03-06-2008 22:15:05
necesito un componente Renees Varios 2 10-10-2007 10:53:49
Necesito hacer mascaras de imagenes en Delphi!! fies_t_ro Gráficos 2 23-05-2006 20:31:41
Necesito componente iotegi Varios 2 04-12-2004 15:20:22


La franja horaria es GMT +2. Ahora son las 01:14:27.


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