Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Impresión
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

 
 
Herramientas Buscar en Tema Desplegado
  #4  
Antiguo 22-06-2006
alain alain is offline
Registrado
 
Registrado: may 2006
Posts: 8
Poder: 0
alain Va por buen camino
Bueno, gracias por responder y perdon por no especificar bien mi problema.
Lo del PrintDialog ya lo estoy usando... Con lo de q variaban los colores me referia a las 2 imagenes impresas... Pero lo q q no me di cuenta (mejor dicho, me confundi) es q estaba comparando una imagen impresa con mi sistema y otra impresa con photoshop, ya probe unas cuantas veces y hay un poco de diferencia. Casi no encuentro diferencia haciendo un "Printer.Canvas.Draw" o un "StretchBlt".
Enrealidad mis dudas son con otra cosa. Las imagenes q tengo q imprimir tienen que estar siempre a la misma escala, digamos, si vario los dpi (o ppp) de la impresora no tiene q cambiar el tamaño de la imagen impresa, y para eso es q uso "StretchBlt", q lo q hace es agrandar o achicar una imagen al copiarla de un canvas origen a uno destino (el destino puede ser el canvas de la impresora), y de lo q tengo miedo es q al ampliar la imagen, se deformen los colores o algo por el estilo. Capaz esto de ajustar la escala se vea mejor en mi codigo, capaz es mas simple explicarlo asi...
Código Delphi [-]
uses pngimage;
// un componente para manejo de imagenes png libre
procedure TForm1.Button1Click(Sender: TObject);
var
  o: TPNGObject;   // imagen a imprimir (origen)
  impresora: TPrinter;
  dpi_foto_h: Integer; //dpi origen, osea las fotos, height
  dpi_foto_w: Integer; //dpi origen, osea las fotos, width
  d_width: Integer;    // ancho q tendra la imagen destino
  d_height: Integer;   // alto q tendra la imagen destino
  dpi_impresora_h: Integer;  //dpi q soporta la impresora, height
  dpi_impresora_w: Integer; //dpi q soporta la impresora, width
  ok: Boolean;
begin
  ok:= PrinterSetupDialog1.Execute;
  dpi_foto_h:= 300;
  dpi_foto_w:= 300;
  impresora:= Printer;
  o:= TPNGObject.Create;
  o.LoadFromFile('C:\mi_imagen.png');

  // devuelve el dpi en altura de la impresora
  dpi_impresora_h:= GetDeviceCaps(impresora.Handle, LOGPIXELSY);
  // devuelve el dpi en ancho de la impresora
  dpi_impresora_w:= GetDeviceCaps(impresora.Handle, LOGPIXELSX);

  // calculo el ancho de la imagen destino
  d_width:= round(o.Width * dpi_impresora_w / dpi_foto_w);
  // calculo el alto de la imagen destino
  d_height:= round(o.Height * dpi_impresora_h / dpi_foto_h);

  impresora.BeginDoc;
  impresora.Canvas.Lock;

  // copio la imagen a la impresora, agrandandola o achicandola, segun lo calculado arriba
  if StretchBlt(impresora.Canvas.Handle, 0, 0, d_width,d_height,
                o.Canvas.Handle, 0, 0, o.Width, o.Height,
                SRCCOPY) then
    ShowMessage('Se agrando con exito')
  else
    ShowMessage('ERROR al intentar ejecutar el StretchBlt');

  impresora.Canvas.Unlock;
  impresora.EndDoc;
end;

A ver q les parece, acepto todo tipo de opiniones, criticas.
Salu2!

Última edición por alain fecha: 22-06-2006 a las 18:15:02.
Responder Con Cita
 


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Redimensionar imagenes con buena calidad? RazoR Gráficos 17 06-06-2006 21:47:37
No puedo imprimir imagenes y shapes cesar_delphi Impresión 2 02-11-2005 02:22:50
Imprimir imagenes en Rave ajenas a la BD ¡¡ elbilla Impresión 0 21-12-2004 12:20:09
Problema al imprimir imágenes (Qreport) Benidelphi Impresión 0 28-08-2003 11:22:41
Como puedo imprimir un TtreeView con imagenes? jmrojass Varios 0 03-06-2003 22:03:38


La franja horaria es GMT +2. Ahora son las 22:21:58.


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