Avatar billede simon.ulsnes Nybegynder
19. marts 2001 - 15:55 Der er 4 kommentarer og
2 løsninger

CreateFont

Hej eksperter!
Som nogle måske har set på tidligere spørgsmål herinde, er jeg i gang med et lille skriveprogram. Nu vil jeg bare lige spørge: Hvordan sætter jeg skrifttypen i f.eks. en edit-boks (WinAPI)?
Jeg har prøvet at bruge CreateFont, og det virkede da også fint. Problemet er i bund og grund skriftstørrelsen. Ved at sætte nHeight sætter man størrelsen, men det passer ikke med de normale punktskala.
Hvis jeg f.eks. sætter nHeight til 14, bliver skrifttypen i 10 punkter.

Hvordan bruger jeg det ordentligt?

/ Simon
Avatar billede wisen Nybegynder
19. marts 2001 - 16:04 #1
Der er denne sammenhæng mellem nHeight og PointSize :

nHeight = -MulDiv(PointSize, GetDeviceCaps(hDC, LOGPIXELSY), 72);
Avatar billede simon.ulsnes Nybegynder
19. marts 2001 - 16:09 #2
PointSize = punkter eller hvad?
Avatar billede soepro Nybegynder
21. marts 2001 - 10:09 #3
Formlen er:

Font.Height = -Font.Size * Font.PixelsPerInch / 72;

Dvs. Height er antal pixels som Font\'en skal fylde med den nuværende opløsning i den punktstørrelse font\'en har.

Eksempel:
Font size = 12 punkter
Font height = -(12 * Font.PixelsPerInch / 72) = -11

for en MS Sans Serif i 8 punkt, hvor PixelsPerInch = 99;

Avatar billede wisen Nybegynder
21. marts 2001 - 10:11 #4
.. jep, PointSize er den ønskede punktstørelse...
Avatar billede wisen Nybegynder
21. marts 2001 - 10:16 #5
Læg mærke til at der er forskel på, at bruge fontens opløsning (soepro) og \"skærmens\" opløsning (min løsning). Det er ikke sikkert at det er det samme...
Avatar billede soepro Nybegynder
21. marts 2001 - 10:35 #6
Du har muligvis ret - jeg vil dog tro at \"Font.PixelsPerInch\" propertyen har taget højde for dette - der er i alt fald ingen problemer med at bruge det i praksis.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester