Ver Mensaje Individual
  #6  
Antiguo 01-07-2013
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Reputación: 31
Lepe Va por buen camino
Todos los generadores de informes que conozco, trabajan en twips ( 1 pulgada tiene 1440 twips si no recuerdo mal), ya que es una medida independiente del dispositivo (papel, impresora, pantalla, escaner). Para colmo de males, se tiene en cuenta la propiedad del Form PixelPerInch (varía al usar fuentes grandes o normales en windows).

Cuando trabajé con Reportman (la versión OpenSource), usé estas conversiones:
Código:
                   1440 twips                          2.54 cms
twips_per_Inch  = ------------        cms_per_Inch =  ---------
                   1 Inch                               1  Inch

                    72  pixels
pixels_per_inch = -----------
                     1 inch
-----------------------------------------------------------------------------}
Estas rutinas están hechas por mí (editado, porque me equivoqué antes):
Código Delphi [-]
const
 CMS_PER_INCHESS=2.54;
 TWIPS_PER_INCHESS=1440;
 POINTS_PER_INCHESS=72;


function PixelsToTwips(apixels:integer):integer;
begin
  Result:=Round((APixels/(Screen.PixelsPerInch))* TWIPS_PER_INCHESS);
end;

function TwipsToPixels(atwips:integer):integer;
begin
  Result:=Round((atwips *Screen.PixelsPerInch) / TWIPS_PER_INCHESS);
end;

Estas otras, son de ReportMan (Open Source):
Código Delphi [-]
type 
TRpTwips=integer;
function twipstoinchess(twips1:TRpTwips):double;
begin
 Result:=twips1/TWIPS_PER_INCHESS;
end;

function twipstocms(twips1:TRpTwips):double;
begin
 Result:=(twips1/TWIPS_PER_INCHESS)*CMS_PER_INCHESS;
end;
Te recomiendo (por el bien de tu salud mental ) uses siempre una sola unidad, todo en twips, y, si tienes que mostrar algo al usuario, entonces haces al conversión a pixels o pulgosos.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.

Última edición por Lepe fecha: 01-07-2013 a las 17:22:04. Razón: corregir erratas
Responder Con Cita