Bueno, GetDeviceCaps variará sus valores según lo que tu dices... ¿O como crees que VB llega a ese valor?
Es mas.. lo he hecho y funciona, en VB Printer.TwipsPerPixelX da 2,4 y Screen.TwipsPerPixelX da 15... Trabajando con las proporciones siempre llego al mismo valor, desde Delphi y desde VB, esto es lo que he escrito:
Código:
Const
TWIPSPERINCH = 1440;
implementation
function TwipsToPixelsX(DC: HDC; lTwips: Extended): Extended;
begin
Result := (lTwips * GetDeviceCaps(DC, LOGPIXELSX)) / TWIPSPERINCH;
end;
function PixelsToTwipsX(DC: HDC; lPixels: Extended): Extended;
begin
Result := (lPixels * TWIPSPERINCH) / GetDeviceCaps(DC, LOGPIXELSX);
end;
para probarlo:
Código:
procedure TForm1.Button1Click(Sender: TObject);
begin
Caption := Format('Impresora: %f Pantalla: %f',
[PixelsToTwipsX(Printer.Handle, 1),
PixelsToTwipsX(Canvas.Handle, 1)]);
end;
Teneme al tanto de como te ha ido...
Saludos!