Avatar billede noex Nybegynder
29. november 2001 - 14:47 Der er 6 kommentarer og
1 løsning

Pixelstørrelse på en streng

Mig bekendt er der ingen metode på et String objekt, som kan returnere pixelstørrelsen på en streng!?

Er der nogen, som har en genial idé til, hvordan man kan lave en sådan metode?

Jeg tænkte på at lave et array med samtlige tegn, og i arrayet gemme information om, hvor mange pixels hver enkelt tegn er.

En metode skulle således tage en String som argument. Metoden skulle så gennemløbe strengen tegn for tegn, slå pixelstørrelsen op i arrayet for hvert tegn, og til sidst har jeg den samlede pixelstørrelse på strengen, som metoden skal returnere.

Hvad siger eksperterne? Er det en tåbelig idé. Kan det gøres smartere?

Det forudsættes at skrifttype og fontsize er statiske størrelser, så det behøver en eventuel løsning ikke at tage højde for. Tja....hvis det var ønskeligt at kunne benytte flere skrifttyper, kunne man tilføje en ekstra dimension til arrayet for at kunne håndtere flere skrifttyper.

Nå, men jeg glæder mig til at høre en masse gode forslag :-)
Avatar billede olebole Juniormester
29. november 2001 - 14:50 #1
<ole>
Ja, det er tåbeligt  :o)
Hvis du sætter pointantallet ned til 50, skal jeg give dig svaret  ;o)
/mvh
</bole>
Avatar billede jumper Nybegynder
29. november 2001 - 14:51 #2
Tja, den absolut ENESTE måde du kan aflæse pixelstørrelsen på en streng er ved at smide den ind i et element på siden og aflæse dennes størrelse - ellers giver begrebet \"pixel\" ingen mening ;o)

Laver lige lidt kode til dig.. behøves det virke i andet end IE ?

/Thor
Avatar billede jumper Nybegynder
29. november 2001 - 14:53 #3
<div ID=\"PixelElement\" style=\"position:absolute;visibility:hidden;width:0px;height:0px\"></div>

<script>

function getFontHeight(sContent,sFont){
  var EL = document.getElementById(\"PixelElement\");
  EL.style.font = sFont;
  EL.innerText = sContent;
  return EL.offsetHeight;
}

</script>

/Thor
Avatar billede jumper Nybegynder
29. november 2001 - 14:54 #4
Hvis du erstatter

EL.innerText = sContent;

med

EL.innerHTML = sContent;

virker det ovenstående både i IE4+ samt NS6/Mozilla.

/Thor
Avatar billede jumper Nybegynder
29. november 2001 - 14:56 #5
function getFontHeight(sContent,sFont){
  var EL = document.getElementById(\"PixelElement\");
  EL.style.fontFamily = sFont;
  EL.innerHTML = sContent;
  return EL.offsetHeight;
}

var verdanaSize = getFontHeight(\"Test\",\"Verdana\");

/Thor
Avatar billede noex Nybegynder
29. november 2001 - 15:35 #6
Det var nu ikke højden, jeg var ude efter, men i stedet værdien af \"offsetWidth\" attributten på elementet.

Men du bragte mig jo 100% på sporet, så jeg takker for dit hurtige svar :-)
Avatar billede jumper Nybegynder
29. november 2001 - 15:37 #7
Okay, \"offsetWidth\" istedet for \"offsetHeight\" så da ;D

/Thor
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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