Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 12-11-2011
Avatar de salvica
salvica salvica is offline
Miembro
 
Registrado: mar 2004
Ubicación: Albacete (España) ... En un lugar de la Mancha ...
Posts: 304
Poder: 21
salvica Va por buen camino
Imprimir Canvas en un TCustomControl

Hola a todos, de nuevo por estos lares

He hecho un componente a partir de un TCustomControl, que me dibuja una gráfica en un Canvas mayor que la ventana (1650 x 389)

El problema viene cuando intento imprimirlo, ya que solo soy capaz de imprimir la parte visible.
  1. He intentado copiar el Canvas a un TBitmap y solo copio la parte visible
  2. He intentado asignar el canvas a un TImage o TBitmap, pero me da el error "Cannot assign TControl.Canvas to a TBitMap.Canvas"
  3. He intentado dibujar la gráfica directamente en el Canvas de un TImage o TBitmap, pero no me muestra nada (solo un area gris)
  4. He intentado derivar el componente de un TImage o TBitmap, pero sigo sin ver nada
¿Podeis decirme como se hace?
El código de impresión (que solo copia la parte visible)
Código Delphi [-]
procedure TBanda.ImprimirBanda;
var
  Bitmap     : TBitmap;
  AreaBitmap : TRect;
begin
  AreaBitmap := FAreaBanda;
  Bitmap     := TBitmap.Create;
  try
    Bitmap.Height := FAreaBanda.Bottom;
    Bitmap.Width  := FAreaBanda.Right;
    Bitmap.Canvas.CopyRect(FAreaBanda, Canvas, FAreaBanda);
    PrintScaled(Bitmap); <---- esto imprime el bitmap en el canvas de la impresora
  finally
    Bitmap.Free;
  end;
end;
Saludos
salvica
Responder Con Cita
  #2  
Antiguo 14-11-2011
Avatar de salvica
salvica salvica is offline
Miembro
 
Registrado: mar 2004
Ubicación: Albacete (España) ... En un lugar de la Mancha ...
Posts: 304
Poder: 21
salvica Va por buen camino
Smile Bueno, pues me respondo

He pasado los métodos del Paint a un procedimiento DibujarBanda, con lo que queda así:
Código Delphi [-]
procedure TBandaPluvio.Paint;
var
  BitmapBanda : TBitmap;
begin
  BitmapBanda := TBitmap.Create;
  try
    DibujaBanda(BitmapBanda);
    Canvas.Draw(0, 0, BitmapBanda); <--- aqui copio el Bitmap en el Canvas
  finally
    BitmapBanda.Free;
  end;
end;

y la impresión queda así
Código Delphi [-]
procedure TBandaPluvio.ImprimirBanda;
var
  BitmapBanda : TBitmap;
begin
  BitmapBanda := TBitmap.Create;
  try
    DibujaBanda(BitmapBanda);
    PrintScaled(BitmapBanda);
  finally
    BitmapBanda.Free;
  end;
end;

Saludos
salvica
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
Imprimir Bitmap con Printer.Canvas Peterlolazo Impresión 1 12-11-2007 22:13:29
¿Como imprimir con el canvas ? judoboy Impresión 7 16-09-2006 16:27:22
Imprimir una imagen con Canvas emtas Impresión 2 14-04-2005 19:14:50
imprimir la imagen de image1 con el canvas? click Impresión 1 04-12-2004 13:56:51
imprimir en el canvas del a impresora en vertical click Impresión 0 03-11-2004 06:32:55


La franja horaria es GMT +2. Ahora son las 23:31:21.


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