Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 05-06-2006
Avatar de Manuel
Manuel Manuel is offline
Miembro
 
Registrado: may 2003
Ubicación: San Pedro de la Paz/Chile
Posts: 324
Poder: 22
Manuel Va por buen camino
Red face Ejemplo de impresión en el canvas de la impresora

Hola amigos del foro, talvez la pregunta que le hago ahora se la han hecho miles de veces pero he buscado en el foro y no he encontrado lo que busco, me gustaría que me indicaran un ejempo como puedo imprimir en el canvas de la impresora no lo he hecho nunca y ahora tengo que ocuparlo, gracias amigos.
__________________
Manuel Muñoz L. Trabajando con delphi 7.0 , migrando sistema a Delphi XE8, matando BDE y pasando FIREDAC.
Responder Con Cita
  #2  
Antiguo 05-06-2006
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
Un ejemplo secillo:

Código Delphi [-]
uses Printers;

begin
  Printer.BeginDoc;
  try
    Printer.Canvas.TextOut(100,100,'Hola mundo');
    Printer.EndDoc;
  except
    Printer.Abort;
  end;
end;

Algo un poco mas complicado, usando medidas reales:
Código Delphi [-]
uses Printers;

function mmToPixelsX(X: Real): Integer;
var
  PixelsPerInchX: Integer;
  OffsetX: Integer;
begin
  PixelsPerInchX := GetDeviceCaps(Printer.Handle, LOGPIXELSX);
  OffsetX := GetDeviceCaps(Printer.Handle, PHYSICALOFFSETX);
  Result:= Round((X / 25.4) * PixelsPerInchX) - OffsetX;
end;

function mmToPixelsY(Y: Real): Integer;
var
  PixelsPerInchY: Integer;
  OffsetY: Integer;
begin
  PixelsPerInchY := GetDeviceCaps(Printer.Handle, LOGPIXELSY);
  OffsetY := GetDeviceCaps(Printer.Handle, PHYSICALOFFSETY);
  Result:= Round((Y / 25.4) * PixelsPerInchY) - OffsetY;
end;

var
  x1, y1, x2, y2: Integer;
begin
  Printer.BeginDoc;
  try
    x1:= mmToPixelsX(30);
    x2:= mmToPixelsX(100);
    y1:= mmToPixelsY(30);
    y2:= mmToPixelsY(100);
    // Dibujamos un circulo de 7 cm
    Printer.Canvas.Ellipse(x1,y1,x2,y2);
    Printer.EndDoc;
  except
    Printer.Abort;
  end;
end;

Y a partir de esto solo hay que utilizar cualquier otro metodo de dibujo sobre el canvas que te apetezca, el unico que no funciona es FloodFill pero el resto creo que funciona bien.

Por ultimo aqui te dejo otro, este dibuja una bonita espiral:

Código Delphi [-]
procedure Espiral(Canvas: TCanvas; X,Y,Ancho: Integer; V: Real);
var
  i: integer;
begin
  Ancho:= Ancho * 16;
  V:= (2*V*pi)/Ancho;
  Canvas.MoveTo(x,y);
  for i:= 1 to Ancho do
  begin
    Canvas.LineTo(x + (Round(i*cos(V*i))) shr 4,y + (Round(i*sin(V*i)) shr 4));
  end;
end;

var
  x, y: Integer;
begin
  Printer.BeginDoc;
  try
    x:= Printer.PageWidth div 2;
    y:= Printer.PageHeight div 2;
    Espiral(Printer.Canvas,x,y,x,100);
    Printer.EndDoc;
  except
    Printer.Abort;
  end;
end;

Última edición por seoane fecha: 05-06-2006 a las 20:56:28.
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
Problema con el Canvas de Impresion Delphi 5 cesarlopez Impresión 2 05-02-2006 18:41:07
Dudas con Impresion con Canvas lroblesco Impresión 5 24-02-2005 04:35:06
imprimir en el canvas del a impresora en vertical click Impresión 0 03-11-2004 06:32:55
Impresión con Canvas en Delphi 6 MarcelRuz Impresión 4 27-04-2004 01:12:59
graficos en el canvas de la impresora erickpch Impresión 3 15-05-2003 00:29:50


La franja horaria es GMT +2. Ahora son las 02:45:47.


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