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