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 23-09-2015
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 11
aguml Va por buen camino
No puedo ajustar una imagen a un tamaño de papel correctamente

Pues este proyecto es antiguo y lo estoy modificando porque me di cuenta que no ajusta bien el tamaño. Lo he solucionado poniendo el codigo dentro de un bucle do...while pero creo que deberia funcionar bien a la primera y no veo la manera.
Aqui el codigo:
Código PHP:
#define MAXHEIGHTA5 745  //Alto maximo para imprimir en A5
#define MAXWIDTHA5 524   //Ancho maximo para imprimir en A5
#define MAXHEIGHTA4 1080 //Alto maximo para imprimir en A4
#define MAXWIDTHA4 745   //Ancho maximo para imprimir en A4
#define MAXHEIGHTA3 1537 //Alto maximo para imprimir en A3
#define MAXWIDTHA3 1040  //Ancho maximo para imprimir en A3

      
int deltay;
      
int deltax;
      
float porcentaje 100;

      do{
         switch(
VividReport1->PaperSize)
         {
            case 
A5:
               
deltay CurrentImage->Picture->Bitmap->Height MAXHEIGHTA5;
               
deltax CurrentImage->Picture->Bitmap->Width MAXWIDTHA5;
               break;

            case 
A4:
               
deltay CurrentImage->Picture->Bitmap->Height MAXHEIGHTA4;
               
deltax CurrentImage->Picture->Bitmap->Width MAXWIDTHA4;
               break;

            case 
A3:
               
deltay CurrentImage->Picture->Bitmap->Height MAXHEIGHTA3;
               
deltax CurrentImage->Picture->Bitmap->Width MAXWIDTHA3;
               break;
         }

         
//Averiguamos el ancho y alto apropiados para la imagen
         
if(deltay deltax && deltay 0)
         {
            
porcentaje = (100.0 maxHeight) / CurrentImage->Picture->Bitmap->Height;
         }
         else if((
deltay deltax || deltay == deltax) && deltax 0)
         {
            
porcentaje = (100.0 maxWidth) / CurrentImage->Picture->Bitmap->Width;
         }

         if(
porcentaje 100)
         {
            
CurrentImage->Picture->Bitmap->Width -= ((CurrentImage->Picture->Bitmap->Width - (CurrentImage->Picture->Bitmap->Width porcentaje 100)));
            
CurrentImage->Picture->Bitmap->Height -= ((CurrentImage->Picture->Bitmap->Height - (CurrentImage->Picture->Bitmap->Height porcentaje 100)));
         }
      }while(
deltax || deltay 0); 
La idea es quitar el do...while y que se ajuste a la primera. ¿Alguien puede ayudarme?
Responder Con Cita
  #2  
Antiguo 23-09-2015
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola aguml.

No lo comentas, pero leyendo el código parece que la impresión la haces por medio de Vivid Report ¿ Es correcto ?

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 24-09-2015
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 11
aguml Va por buen camino
Pues si, lo que pasa es que no lo indiqué porque pienso que para el código que puse no es importante pero igual me equivoco y me sorprendes.
Lo que intento hacer es lo siguiente:
1-Obtengo el tamaño del papel.
2-Abro la imagen en el contenedor y obtengo el ancho y el alto.
3-la idea es saber a cual de los dos se le tiene que aplicar un mayor porcentaje de reducción para que quepa en la página.
4-Le aplicó el mayor porcentaje a ambos para que la imagen quepa sin perder la proporcionalidad.

Pues no se que falla que no siempre funciona.
Responder Con Cita
  #4  
Antiguo 24-09-2015
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola aguml.

Estoy intentando reproducir el código para ver el comportamiento, pero me encuentro con que me faltan unos datos ¿ Que representan y que valores toman las variables maxHeight y maxWidth ?

La pregunta sobre el reporter es debida a que, si el código da correctamente los valores de ajuste, el problema podría estar generado por alguna particularidad de ese reporter (que recién hoy conocí).

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #5  
Antiguo 24-09-2015
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 11
aguml Va por buen camino
Esas dos variables tiene el valor de MAXHEIGHT y MAXWIDTH para el tamaño de papel de la impresión. Osea, si el papel es A4, MAXHEIGHT será igual a MAXHEIGHT A4 y maxWidth será igual a MAXWIDTHA4.
Responder Con Cita
  #6  
Antiguo 24-09-2015
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 11
aguml Va por buen camino
He estado haciendo cálculos con el móvil y he llegado a la conclusión de que estas lineas:
Código PHP:
 CurrentImage->Picture->Bitmap->Width -= ((CurrentImage->Picture->Bitmap->Width - (CurrentImage->Picture->Bitmap->Width porcentaje 100)));
 
CurrentImage->Picture->Bitmap->Height -= ((CurrentImage->Picture->Bitmap->Height - (CurrentImage->Picture->Bitmap->Height porcentaje 100))); 
Tienen que ser asi:
Código PHP:
 CurrentImage->Picture->Bitmap->Width  CurrentImage->Picture->Bitmap->Width porcentaje 100;
 
CurrentImage->Picture->Bitmap->Height CurrentImage->Picture->Bitmap->Height porcentaje 100
Aunque no creo que influya ya que como estaba lo que hacía era calcular el tamaño final y se lo restaba al tamaño real y me daba lo que tenia que quitarle al tamaño real así que se lo quitaba. Entonces repasando paso a paso me dije "si en el primer calculo ya tengo el tamaño final ¿para que más cuentas? ". Tengo que probarlo pero no creo que influya en el resultado.
Lo que pienso es que en vez de usar los deltas debería de calcular ambos porcentajes y el porcentaje más pequeño es el que tendría que utilizar. Luego lo pruebo a ver que tal.

Última edición por aguml fecha: 24-09-2015 a las 09:19:07.
Responder Con Cita
  #7  
Antiguo 24-09-2015
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 11
aguml Va por buen camino
Lo he solucionado asi:
Código PHP:
      float porcentaje 100porcentajeXporcentajeY;

      
porcentajeX maxWidth 100.0 CurrentImage->Picture->Bitmap->Width;
      
porcentajeY maxHeight 100.0 CurrentImage->Picture->Bitmap->Height;

      
//Averiguamos el ancho y alto apropiados para la imagen
      
if((porcentajeY porcentajeX || porcentajeY == porcentajeX) && porcentajeY 0)
      {
         
porcentaje porcentajeY;
      }
      else if(
porcentajeY porcentajeX && porcentajeX 0)
      {
         
porcentaje porcentajeX;
      }

      if(
porcentaje 100)
      {
         
CurrentImage->Picture->Bitmap->Width CurrentImage->Picture->Bitmap->Width porcentaje 100;
         
CurrentImage->Picture->Bitmap->Height CurrentImage->Picture->Bitmap->Height porcentaje 100;
      } 
Adios a los deltas jejeje.
Responder Con Cita
  #8  
Antiguo 24-09-2015
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Cita:
Empezado por aguml Ver Mensaje
Lo he solucionado asi:...
Recién entro, me alegra que ya hayas encontrado la solución

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
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
ajustar tamaño imagen en un QRDBImage Dclase Varios 4 09-04-2008 15:30:27
FastReport+Corte de papel+tamaño de papel Cheerpipe Impresión 3 25-03-2008 17:55:53
Ajustar el tamaño de la imagen para imprimir ingel Impresión 3 07-03-2007 21:26:25
Ajustar tamaño Barcode hepdad Impresión 2 05-04-2006 15:29:41
ajustar tamaño de fuente VIRU Varios 5 07-02-2006 18:37:44


La franja horaria es GMT +2. Ahora son las 09:53:04.


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