Entwickler-Ecke

Multimedia / Grafik - Schriftgröße berechnen


mimi - So 29.06.03 18:16
Titel: Schriftgröße berechnen
Hallo,

habe da ein problem: wie kann ich unter openGL die schriftgröße berechnen? habe nur TFont zuverfügung :( ich nutze die GLXTreem komponenten.....

Moderiert von user profile iconTino: Absätze entfernt.


Aya - So 29.06.03 19:40

Hi,

das hast du doch schonmal gefragt irgendwann, oder???
Und es geht immernoch genauso wie damals, entweder mit TCanvas.TextWidth oder mit GetTextExtentPoint32.

Au'revoir,
Aya~


mimi - So 29.06.03 20:02

ist möglich. und wie rufe ich diese fuktion auf? könntes du mal ein beispiel posten?

Moderiert von user profile iconTino: Absätze entfernt.


Aya - So 29.06.03 20:25

Hi,

so:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
var
  S: SIZE;
begin
  GetTextExtentPoint32(hDC,'Hallo',Length('Hallo'),S);
  //S.cx = TextBreite
  //S.cy = TextHöhe
end;


Au'revoir,
Aya~


mimi - So 29.06.03 20:39

funktioniert leider nicht. der wer ist zu klein, der zurück gegeben wird :(
gibt es noch ander möglichkeiten ?


Tweafis - So 29.06.03 21:05


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
function getStringSize(DaFont: TFont; text: string): TSize;
var
  tmpCanvas: TCanvas

begin
  tmpCanvas := TCanvas.Create(Self);
  try
    tmpCanvas.Font := DaFont;
    Result := tmpCanvas.textExtent(text);
  finally
    tmpCanvas.free;
  end;
end;


dann kannst du mit

getStringSize in ein TSize dingens reinschreiben und mit

cx und cy die größe abfragen...


mimi - So 29.06.03 22:52

danke, werde ich mal teste:)


mimi - Di 01.07.03 13:43

geht leider nicht. die größe íst immer noch zu klein. die ich rauß habe. gibt es noch andere möglichkeiten ?


Aya - Di 01.07.03 13:48

Ne, die ist schon richtig... nur wenn du mit z.B. glScale deine Schrift vergrößerst, oder mit glTranslate ganz nah herangehst, klappt das natürlich nicht... da müßtest du noch den ZoomFaktor etc mit einberechnen.

Wofür genau brauchst du es denn?

Au'revoir,
Aya~


mimi - Di 01.07.03 14:01

ich brauche es für eine menu steuerung.
ich gebe die menuItems per eine TFont komponenten von glxTRemm aus.
wenn ich jetzt die items makiere muss ich wissen wie lang die items sind damit ich erechnen kann wo die entpunkte sind, das habe ich so versucht:
MenuItems[0].x1:=MenuItems[0].x+size.cx
aber leider hatte er jetzt den maus curse nicht mehr verändert. als ich es wieder geänder hatte, hat alles problem los funktioniert:)


mimi - Do 03.07.03 13:09

geht immer noch nicht, gibt es keine andere winapi funktion ?


MathiasH - Do 03.07.03 19:55

du musst natürlich sämtliche skalierungen, die glxtreem und die Matrix machen, auch mit deinen pixelgrößen machen, denn auf dem weg zum screen wird etliche male skaliert:
1. bei der generierung der textur
2. bei der skalierung der matrix
3. bei der größe/position der QUADS, auf denen die textur ist
4. bei der rasterization(rendern)
erst, wenn du alle diese skalierungen nachmachst kriegst du vernünftige zahlen raus

Wie genau das geht kann ich dir leider auch net sagen

Io-sys/MathiasH


mimi - Do 03.07.03 19:59

gut, dann muss ich mir was andes einfallen lassen. um die endwerte von den texten rauß zu bekommen.