Avatar billede donnib Nybegynder
13. februar 2004 - 08:55 Der er 7 kommentarer og
1 løsning

MeasureString mystisk.

Hej alle,
Jeg har følgende kode som måler lægden i pixels af en string.

Bitmap bitmap = new System.Drawing.Bitmap(1,1);
Graphics graphics = System.Drawing.Graphics.FromImage(bitmap);
stringSize = graphics.MeasureString(text.Trim(), stringFont);

Det samme kode kører jeg på .NET Compact Framework.

Hvis jeg måler teksten >>Test<< med fonten >>Tahoma, 10pt<<
så får jeg på pcen målt den til 30px og på pocketpcen til 25px.

Er der nogen der ved hvorfor jeg får to forskellige tal når det er samme kode og samme tekst ? Jeg vil mene/håbe at fonten er den samme på pocket pc som den er på pcen.

Jeg har lavet en lille test ved at skrive den tekst jeg skal måle i Paint og så måle hvor langt den er. Her måler jeg den til 27px!!!!!! Så nu forstår jeg ingenting. Det ser ud til at der ingen af dem der har ret.

Hvad gør jeg forkert ?
Avatar billede mihai Nybegynder
13. februar 2004 - 11:09 #1
OPDATERING :

Pocket PCen dvs. med .NET Compact Framework måler rigtigt. Jeg har mål flere strenge nu i Paint og devicet giver precis pixels men det gør pcen ik. Jeg ved ikke hvad der skyldes at der er forskel. Det er sikkert noget i Windows der gør at det helle ikke bliver målt korrekt.
Avatar billede burningice Nybegynder
13. februar 2004 - 14:05 #2
køer du antialiasing på din pc?
Avatar billede mihai Nybegynder
13. februar 2004 - 14:09 #3
det ved jeg ik. Kan man finde ud af det og kan man komme uden om det ?

Mihai
Avatar billede burningice Nybegynder
13. februar 2004 - 14:15 #4
det bliver sat via din TextRenderingHint på dit graphics-object, og bruger TextRenderingHint-enumereringen:

AntiAlias Specifies that each character is drawn using its antialiased glyph bitmap without hinting. Better quality due to antialiasing. Stem width differences may be noticeable because hinting is turned off.

AntiAliasGridFit Specifies that each character is drawn using its antialiased glyph bitmap with hinting. Much better quality due to antialiasing, but at a higher performance cost.

ClearTypeGridFit Specifies that each character is drawn using its glyph CT bitmap with hinting. The highest quality setting. Used to take advantage of ClearType font features.

SingleBitPerPixel Specifies that each character is drawn using its glyph bitmap. Hinting is not used.

SingleBitPerPixelGridFit Specifies that each character is drawn using its glyph bitmap. Hinting is used to improve character appearance on stems and curvature.

SystemDefault Specifies that each character is drawn using its glyph bitmap, with
the system default rendering hint. The text will be drawn using whatever font smoothing settings the user has selected for the system.

Så her kan du både teste hvad den er sat til, og sætte den til det du vil
Avatar billede mihai Nybegynder
13. februar 2004 - 14:32 #5
det ser desværre ikke ud til det hjælper:

jeg har prøvet alle de muligheder men det ændrer slet ikke på hvad jeg får af størrelse :

graphics.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias;
Avatar billede burningice Nybegynder
13. februar 2004 - 14:42 #6
hm... kay.. jeg ved at der er lidt problemer med den, og hvis man vil have det helt exacte tal plejer den eneste mulighed at være at ty til de native Win32-metoder
Avatar billede mihai Nybegynder
13. februar 2004 - 14:44 #7
har du nogle eksempler ?
Avatar billede donnib Nybegynder
17. februar 2004 - 21:49 #8
har fået løst problemet på en måde men ikke 100% procent. Jeg taget pointene tilbage ok lukker spørgsmålet.
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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