Imprimir imagenes con Borland C++ ???

Davik
15 de Septiembre del 2003
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();
}

Davik
15 de Septiembre del 2003
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