2010-02-10 12 views
4

Lorsque vous définissez une taille de police 10 points dans VB6:différences de taille de police entre VB6 et VB.NET

Me.FontName = "Verdana" 
Me.FontSize = 10 
Debug.Print Me.FontSize 

La taille de la police est rapporté 9,75. Cependant, quand la même chose est faite dans VB.NET:

Me.Font = New System.Drawing.Font("Verdana", 10) 
Console.WriteLine(Me.Font.Size) 

La taille rapportée est 10. Est-ce que quelqu'un peut expliquer la différence ici? Mon intuition est que VB6 utilise une étape de 0,75 parce que mon système est configuré à 96 DPI, et .NET n'utilise pas cette étape, ou ne signale pas son utilisation, mais je ne suis pas sûr.

+1

Notez que lorsque vous définissez la taille de la police à 10 pt dans Visual Studio, vous finirez avec 9,75. – Joey

+0

avez-vous essayé d'autres valeurs? –

+0

Oui, ils semblent tous avoir le même comportement. – DAC

Répondre

1

Il n'y a rien de mal et les deux sont techniquement les mêmes à l'écran. Il signale simplement la police "plus précisément". La taille de pas de police pour 96 dpi est de 0,75 (0,6 à 120 DPI), donc les étapes sont techniquement de 9 à 9,75 à 10,5.

+0

Alors VB6 affiche précisément la police, alors que VB.NET affiche simplement ce que j'ai demandé? – DAC

+0

Les tailles de polices sont "conceptuelles". Ils sont décomposés en différents niveaux de points (9, 10, 10.5, 11, 12, 14) que nous acceptons comme des représentations standard. – jasonk

0

L'étape de la propriété Taille est 72/GetDeviceCaps(hDC, LOGPIXELSY) qui dans les petites polices (96 DPI) est de 0,75 et en grand-polices (120 DPI) est de 0,6

Vous pouvez utiliser SetRatio sur OleFont pour contrôler le dénominateur dans le précédent expression. GetDeviceCaps est le paramètre par défaut.

Questions connexes