Imprimir imagenes con Borland C++ ???
Quiero Imprimir el contenido de un objeto TImage, el codigo q utilizao es el que aparece al final del mensaje, la cosa funciona, pero no soy capaz de controlar correctamente el tamaño de impresión de la imagen, ya que durante todo el proceso trabajo con el tamaño en pixels, pero no consigo encontrar ningún parámetro que me lo relacione con el tamaño en centimetros que ocupara en el papel. ¿¿Alguien pued ayudarme?? ¿¿Como se fija el tamaño de impresión??
CODIGO
if (PrintDialog1->Execute()) {
TPrinter* Prntr = Printer();
TRect Origen=Rect(0,0,Image1->Picture->Bitmap->Width,Image1->Picture->Bitmap->Height);
int xp, yp;
xp=(25*Prntr->PageWidth)/210; //Ancho de un A4 210mm
yp=(75*Prntr->PageHeight)/297; //Alto de un A4 297mm
TRect Destino=Rect(400,400,xp+400,yp+400);
Prntr->BeginDoc();
Prntr->Canvas->CopyRect(Destino,Image1->Picture->Bitmap->Canvas,Origen);
Prntr->EndDoc();
}
CODIGO
if (PrintDialog1->Execute()) {
TPrinter* Prntr = Printer();
TRect Origen=Rect(0,0,Image1->Picture->Bitmap->Width,Image1->Picture->Bitmap->Height);
int xp, yp;
xp=(25*Prntr->PageWidth)/210; //Ancho de un A4 210mm
yp=(75*Prntr->PageHeight)/297; //Alto de un A4 297mm
TRect Destino=Rect(400,400,xp+400,yp+400);
Prntr->BeginDoc();
Prntr->Canvas->CopyRect(Destino,Image1->Picture->Bitmap->Canvas,Origen);
Prntr->EndDoc();
}
Veo que es neste foro no he tenido mucha suerte, menos mal que he localizado la respuesta por otros medios, y gracias a un amigo (Alejandro).
Estas es la solución que el me ha dado
Hola Davik, quizás pueda serte útil leer estos datos:
// ancho y alto fÃsicos de la página en la impresora, en pixeles:
int ancho = GetDeviceCaps(Printer()->Handle, PHYSICALWIDTH);
int alto = GetDeviceCaps(Printer()->Handle, PHYSICALHEIGHT);
// PÃxeles por pulgada de la impresora (horizontal y vertical):
int LogPixX = GetDeviceCaps(Printer()->Handle, LOGPIXELSX);
int LogPixY = GetDeviceCaps(Printer()->Handle, LOGPIXELSY);
// Zona no imprimible:
int NoImpX = GetDeviceCaps(Printer()->Handle, PHYSICALOFFSETX);
int NoImpY = GetDeviceCaps(Printer()->Handle, PHYSICALOFFSETY);
Suerte,
Alejandro
Estas es la solución que el me ha dado
Hola Davik, quizás pueda serte útil leer estos datos:
// ancho y alto fÃsicos de la página en la impresora, en pixeles:
int ancho = GetDeviceCaps(Printer()->Handle, PHYSICALWIDTH);
int alto = GetDeviceCaps(Printer()->Handle, PHYSICALHEIGHT);
// PÃxeles por pulgada de la impresora (horizontal y vertical):
int LogPixX = GetDeviceCaps(Printer()->Handle, LOGPIXELSX);
int LogPixY = GetDeviceCaps(Printer()->Handle, LOGPIXELSY);
// Zona no imprimible:
int NoImpX = GetDeviceCaps(Printer()->Handle, PHYSICALOFFSETX);
int NoImpY = GetDeviceCaps(Printer()->Handle, PHYSICALOFFSETY);
Suerte,
Alejandro
