Avatar billede hatecaps Nybegynder
21. november 2003 - 13:54 Der er 6 kommentarer og
1 løsning

Hvor mange pixels er en font i preview

Hejsa,

jeg sidder og leger med en rapportdesigner á lá Rave. I den kan man placere Tekstlabels og give dem en fast tekst (caption). Mit spørgsmål er nu - hvordan regner jeg ud med hvilken fontstørrelse caption skal vises, når jeg kender papirbredde, preview bredde i pixels, valgt font, og valgt fontstørres til udskrift ?

Håber mit spørgsmål er til at forstå, ellers må i råbe op

ha' det godt
hatecaps
Avatar billede bufferzone Praktikant
21. november 2003 - 16:23 #1
Hvis jeg har forstået dig rigtigt, så er svaret.

Det kan du faktisk ikke, da fontens bredde afhænger af hvilken font der er balgt og af hvilke bogstaver og tegn vi taler om.

Fonte er designede vidt forskelligt, med forskellige knibninger (det hedder afstanden mellem de forskellige bogstaver) og forskellig brede. I dag er de fleste foonte Ikke proportionale. F.eks. New Courier er proportiona, og du kan have 80 karaktere på en A4 i 10 pica (hvis jeg husker ret).

Sætningens bredde vil altså afhænge af hvilke bogstaver der er anvendt i sætninger samt af fonten.

Du kan måske lave en gennemsnitsværdi ved at forsøge dig frem
Avatar billede borrisholt Novice
22. november 2003 - 09:56 #2
Jeg ved ikke hvordan du udregner forn størelsen ud over ved at prøve dig frem.

Størelsen på bogstaverne er nem nok, du skal bare have et handle til den Device context (Canvas.handle) du tegner på

function TextExtent(const aDC : HDC; const Text: string): TSize;
begin
  Result.cX := 0;
  Result.cY := 0;
  Windows.GetTextExtentPoint32(aDC, PChar(Text), Length(Text), Result);
end;

function TextWidth(const aDC : HDC; const Text: string): Integer;
begin
  Result := TextExtent(aDc, Text).cX;
end;

function TextHeight(const aDC : HDC; const Text: string): Integer;
begin
  Result := TextExtent(aDc, Text).cY;
end;


Jens B
Avatar billede hatecaps Nybegynder
23. november 2003 - 18:17 #3
bufferzone > som jeg skrev i mit spørgsmål, så kender jeg allerede font og fontstørrelse.

borris > ser spændende ud, med de skal vist først bruges senere i proceduren.

Altså, vi prøver igen.

Lad os sige at brugeren har defineret en A4 papirstørrelse.
Ved hjælp af zoom har brugeren gjort preview-"papiret" 420 pixels bredt.
På det her papir har brugeren placeret en tekst der hedder "Test1"
Brugeren har valgt at teksten skal vises med Times New Roman, størrelse 10.
Det jeg nu har brug for at vide er hvor mange pixels bred den tekst jeg viser på preview-papiret skal være. At find den font der giver mig det er nemt nok.

ha' det godt
hatecaps
Avatar billede bufferzone Praktikant
23. november 2003 - 18:23 #4
Du kender fonten og fontstørrelsen, men du ved ikke hvilke bogstaver dine brugere vil bruge. Der er stor forskel på om en bruger skriver en "sætning" på 50 i'er eller 50 M'er de vil fylde forskelligt
Avatar billede borrisholt Novice
24. november 2003 - 08:29 #5
Jammen !

Hvis du hhar teksten, og du har er DC, skal du bare bruge TextWidth

Jens B
Avatar billede hatecaps Nybegynder
24. november 2003 - 09:26 #6
bufferzone>> jeg skriver jo netop at bogstaverne skal være "Test1"

Jens >> det er jo meget fint med textwidth, men jeg skal først regne ud hvor bred teksten skal være i forhold i mit "papir" før jeg kan bruge TextWidth til at finde den rigtige font at skrive den med !
Avatar billede hatecaps Nybegynder
04. december 2003 - 12:23 #7
jens>> du var på rette vej så du får pointene. Det der manglede var
forhold := printer.canvas.textwidth/printer.pagewidth

og så bruge dette forhold * min formbredde

ha' det godt
hatecaps
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