Page 1 of 1

BMP EN REPORTE

Posted: Fri Oct 05, 2012 11:50 am
by juan carlos bellucci
Hola Foro.

tengo un problema en una impresion.

en algunas maquinas me sale el bmp en el lugar prefijado y en otras sale mas chico y fuera de la zona ....
estoy usando esta linea de código

oPrn:SayBitmap( 60.5, 580 , "Escudo" )

si alguien tiene alguna sugerencia les voy a agradecer. desde ya muchas gracias.

Re: BMP EN REPORTE

Posted: Fri Oct 05, 2012 12:23 pm
by Manuel Aranda
Creo que te faltan dos parámetros más, aparte de las coordenadas de ubicación debes de indicar también el tamaño:

algo así como esto : SayBitmap(1.5,2,6,2,"LOGOTIPO.BMP",oPrn)

Re: BMP EN REPORTE

Posted: Fri Oct 05, 2012 12:28 pm
by karinha

Re: BMP EN REPORTE

Posted: Fri Oct 05, 2012 1:14 pm
by juan carlos bellucci
Hola Manuel.
Mira la instruccion la tengo asi.
oPrn:SayBitmap( nRow, nCol, cBitmap, nWidth, nHeight, nRaster )

El tema es que compilo en mi maquina con windows xp y sale todo bien , pero en la casa del cliente me sale mas chico y desplazado el escudo....pero las letras me salen bien ...

esto uso para las letras
oPrn:CmSay( Fila, 6.50, "SECRETARIA DE PROGRAMAS SANITARIOS" , oFont1,,CLR_BLACK,,2) // Titulo 1

La pregunta concreta es si hay alguna forma de recalcular la resolucion para los bmp como para las letras .

Re: BMP EN REPORTE

Posted: Fri Oct 05, 2012 2:43 pm
by Cgallegoa
Juan Carlos

El asunto está en la resolución de cada impresora. Tu tienes oPrn:CmSya() que toma tu texto y lo coloca en una posición absoluta medida en centímetros, sin importar la resolución de la impresora. Por eso te sale bien.

Respecto a oPrn:SayBitmap() las coordenadas son en pixeles por lo que te saldrá diferente en impresoras con diferentes resoluciones. La solución es:

Code: Select all | Expand

nRaster := SRCAND := 8913094
xaCoord:=oPrn:CmRect2Pix( { 0.90, 2.00, 2.6, 2.6 } )
oPrn:SayBitmap( xaCoord[1] , xaCoord[2] , "Logo.bmp" , xaCoord[3], xaCoord[4] , nRaster)
 

Con el método oPrn:CmRect2Pix() logras la conversión de una posición aboluta medida en centímetros a los pixeles de la impresora. En otras palabras, no importa la resolucíón, siempre imprimirá en la misma posición. En el help de la clase TPrint encuentras información de :CmRect2Pix

Espero haberte ayudado,

Re: BMP EN REPORTE

Posted: Fri Oct 05, 2012 5:48 pm
by sysctrl2
Yo ya probe la solucion que da carlos

y si bien no se mueve mucho de posicion la imagen se mira mas grande en una hp photosmart y en una hp de otra generacion

se mira mas peque el LOGO.
por cierto yo lo uso con JPG.

Code: Select all | Expand

oImage :=TImage():define( , cLogo )
nRaster := SRCAND := 8913094
xaCoord := ::oPrn:CmRect2Pix( { 2.70, 1.50, 2.90, 2.90 } )  
oPrn:SayImage( xaCoord[1] , xaCoord[2] , oImage , xaCoord[3], xaCoord[4] , nRaster)
oImage:end()
 


entonces pasa que en cada cliente donde instalamos tenemos que usar un codigo diferente.
Curiosamente como dice el colega las letras salen correctas.
Saludos.

Re: BMP EN REPORTE

Posted: Sun Oct 07, 2012 7:53 pm
by Manuel Aranda
Hola de nuevo Juan Carlos, disculpa, pero olvidé pasarte la función:

(Creo que es de The Full, Rafa Carmona)

Code: Select all | Expand


**********************************************************************
Func SayBitmap(nArriba,nIzq,nAncho,nAlto,xBitmap,oPrn)
**********************************************************************
Local xCor := {}
LOCAL nPixWidth, nPixHeight
xCor := oPrn:Cmtr2Pix(nArriba,nIzq)
// Pasamos nAncho y nAlto a Pulgadas
nAncho := nAncho/2.54
nAlto  := nAlto /2.54
nPixWidth  := INT(oPrn:nLogPixelY()*nAncho)
nPixHeight := INT(oPrn:nLogPixelX()*nAlto)

oPrn:SayBitmap(xCor[1],xCor[2],xBitmap,nPixWidth ,nPixHeight)

RETURN NIL