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;
procedure TForm1.Button1Click(Sender: TObject);
var
o: TPNGObject; impresora: TPrinter;
dpi_foto_h: Integer; dpi_foto_w: Integer; d_width: Integer; d_height: Integer; dpi_impresora_h: Integer; dpi_impresora_w: Integer; 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');
dpi_impresora_h:= GetDeviceCaps(impresora.Handle, LOGPIXELSY);
dpi_impresora_w:= GetDeviceCaps(impresora.Handle, LOGPIXELSX);
d_width:= round(o.Width * dpi_impresora_w / dpi_foto_w);
d_height:= round(o.Height * dpi_impresora_h / dpi_foto_h);
impresora.BeginDoc;
impresora.Canvas.Lock;
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!