Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Fr Jul 18, 2025 08:47

Foren-Übersicht » Programmierung » OpenGL
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 8 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Bitmapfont und Sonderzeichen/Umlaute
BeitragVerfasst: Mi Sep 24, 2003 20:02 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Jan 04, 2003 21:23
Beiträge: 674
Wohnort: Köln
Hallo mal wieder ;)

wie muss ich folgenden Code umändern, um auch Umlaute ("Ä","Ö","Ü") oder Sonderzeichen/Satzzeichen normal anzeigen zu können??
habe hierzu nichts brauchbares gefunden
Code:
  1. procedure BuildFont(CanvasHandle: HWND);
  2. var
  3.   font: HFONT;
  4. begin
  5.   //Schriftart erstellen
  6.   FontBase := glGenLists(96);
  7.  
  8.   font := CreateFont(
  9.     30,                // Schriftgröße
  10.     0,                             // Buchstabenbreite
  11.     0,                             //  Kursivwinkel (~100=normalkursiv)
  12.     0,                             // ??? = base-line orientation angle
  13.     FW_MEDIUM,                     // font weight
  14.     0,                             // italic
  15.     0,                             // underline
  16.     0,                             // durchgestrichen=strikeout
  17.     ANSI_CHARSET,                  // character set
  18.     OUT_TT_PRECIS,                 // output precision
  19.     CLIP_DEFAULT_PRECIS,           // clipping precision
  20.     ANTIALIASED_QUALITY,           // output quality
  21.     FF_DONTCARE OR DEFAULT_PITCH,  // pitch and family
  22.     'Papyrus');
  23.                     // font
  24.   SelectObject(CanvasHandle, font);
  25.    wglUseFontBitmaps(CanvasHandle, 32, 96, FontBase);
  26.  
  27.   DeleteObject(font);
  28.  
  29. end; (*Build Font*)
  30.  
  31. procedure KillFont;                         // Delete The Font
  32. begin
  33.   glDeleteLists(FontBase, 96);                     // Delete All 96 Characters
  34.  
  35. end;
  36.  
  37.  
  38.  {$Q-}
  39. procedure PrintText(const Text,myFontType: string);
  40. begin
  41.   //Zeigt Text an Rasterpostion an, Überlaufchecks müssen aber deaktiviert sein(
  42.   if (Text = '') then
  43.     Exit;
  44.   glPushAttrib(GL_LIST_BIT);
  45.   glListBase(FontBase-32)  // Set the base list to our character list
  46.  
  47.   glCallLists(Length(Text), GL_UNSIGNED_BYTE, PChar(Text)); // Display the text
  48.   glPopAttrib()
  49. end; (*PrintText*)
  50.  {Q+}



thx schonmal ;)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Sep 24, 2003 20:27 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Also bei einem Bitmapfont ist es nicht schlimm, wenn du alle 128 (normaler Schriftsatz) oder sogar alle 256 (normaler und erweiterter Schriftsatz) Zeichen generierst. Ich meine aber um deine Sonderzeichen zu bekommen musst du alle 256 Zeichen generieren. Bin mir da aber nicht sicher. Bei Bitmapfonts ist es vom Speicher und von der CPU recht uninteressant ob du alle oder nur die hälfte der Zeichen generierst. Bei Polygonen ist das ein wenig kritischer. ;)

Folgende Zeilen haben sich dann geändert.
Code:
  1.   FontBase := glGenLists(256);
  2.   ...
  3.   wglUseFontBitmaps(CanvasHandle, 0, 255, FontBase);
  4.   ...
  5.   glDeleteLists(FontBase, 256);
  6.   ...
  7.   glListBase(FontBase);


(Wie sollte es andere sein) ;) Ich hatte mich diesem Problem auch schon mal gewidmet und eine Unit mit einer Bitmapfontklasse und einer Polygonfontklasse geschrieben. Auf Wunsch kann ich die vorab hier schon mal reinstellen. Die wird aber wahrscheinlich auch in der nächsten dgl-sdk enhalten sein.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Sep 24, 2003 21:14 
Offline
DGL Member

Registriert: Sa Aug 30, 2003 22:23
Beiträge: 36
Wohnort: Hamburg
versuch mal statt
"ANSI_CHARSET "
im create teil
"GERMAN_CHARSET"

vieleicht geht das..

_________________
<< Ich werde Ewig leben oder beim Versuch dies zu erreichen, sterben! >>


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Sep 24, 2003 21:15 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Jan 04, 2003 21:23
Beiträge: 674
Wohnort: Köln
thx... hatte das ganze auch schon vorher ausprobiert, ging aber da nicht, weil mein Fehler woanders lag...
ich habe die Zeichenprozedur im onkeydown aufgerufen und das neue Zeichen mit "chr(key)" übergeben, was aber anscheinend nur bei standard-buchstaben klappt...
wie müsste man denn dann den Typ umformen?? :/

die Umlaute klappen übrigens nach wie vor nicht...


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Sep 24, 2003 21:16 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Jan 04, 2003 21:23
Beiträge: 674
Wohnort: Köln
Dark Avenger hat geschrieben:
versuch mal statt
"ANSI_CHARSET "
im create teil
"GERMAN_CHARSET"

vieleicht geht das..

das habe ich auch gedacht, aber bei mir ist in der windows.pas kein GERMAN_CHARSET definiert :(


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Sep 24, 2003 21:22 
Offline
DGL Member

Registriert: Sa Aug 30, 2003 22:23
Beiträge: 36
Wohnort: Hamburg
hab mich nach http://www.codeworx.org/opengl_tut13.php gerichtet..
aber eben beim probieren auch festgestellt das es nicht geht..

_________________
<< Ich werde Ewig leben oder beim Versuch dies zu erreichen, sterben! >>


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Sep 24, 2003 21:34 
Offline
DGL Member

Registriert: Sa Aug 30, 2003 22:23
Beiträge: 36
Wohnort: Hamburg
Für umlaute benutz statt 96 alle 256 zeichen.. damit geht das
also
glGenLists(256);
usw..

_________________
<< Ich werde Ewig leben oder beim Versuch dies zu erreichen, sterben! >>


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Sep 24, 2003 21:47 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Jan 04, 2003 21:23
Beiträge: 674
Wohnort: Köln
VIELEN dank...

hatte das zwar wie hier im Thread schon geagt zwar schon gemacht, aber da ich 2 Fonts erstellt hatte und den falschen aufgerufen :/

naja, jetzt klappts...

thx :)


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 8 Beiträge ] 
Foren-Übersicht » Programmierung » OpenGL


Wer ist online?

Mitglieder in diesem Forum: Google [Bot] und 17 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.008s | 15 Queries | GZIP : On ]