Text - Antialiasing
Übersicht

EdlothiolBetreff: Text - Antialiasing |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Gibt es irgendeine Bibliothek etc. für BB, mit der man geantialiasten Text ausgeben kann? Der normale ist doch ein bisschen unschön ![]() |
||
![]() |
Travis |
![]() Antworten mit Zitat ![]() |
---|---|---|
Vielleicht kann man soetwas jal selbst versuchen. Man könnte die normale Schrift ja auf dem Bildschirm zeichnen und dann die Pixel die direkt daneben liegen anpassen. Wenn z.B. weißer Text auf schwarzem Hintergrund ist, müsste man diese Pixel grau färben. Werde mich nachher mal dran versuchen ![]() |
||
www.funforge.org
Ich hasse WASD-Steuerung. Man kann alles sagen, man muss es nur vernünftig begründen können. |
![]() |
Triton |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das wäre dann verwischen, Blur.
Antialiasing kann man nur erreichen, indem man das ganze in vergrößerter Darstellung ausgibt und dann kleiner rechnet, also die farbwerte von dem Pixeln zusammenrechnet. In BB könnte man das so realisieren, dass man den gewünschten Inhalt in doppelter oder 4xer größe in ein Image zeichnet und dann auf die gewünschte größe sampled (also kleiner und zusammenrechnet). Aber am besten ist es wenn man sich das vorher schon mit irfanview oder sonst was zurechtlegt und dann als image (oder imagefonts) im Programm verwendet. |
||
Omenaton_2 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Es gibt noch einen Trick, um ein wenig Antialiasing zu simulieren. Das ist keine sehr gute Lösung, aber es ist oft besser als nichts.
Wenn der Hintergrund relativ gleichmäßig einen Farbton und Helligkeit beinhaltet, kann man den Text um 1 Pixel nach rechts unten versetzt in einer Farbe ausgeben, die zwischen der Textfarbe und der Hintergrudfarbe liegt. Man macht das dann auch nochmal nach links oben versetzt. Diese zusätzliche Texte müssen natürlihc vor dem Haupttextzeile ausgegeben werden , damit sie unter dem richtigen Text liegen. So kann man auch leicht einen billigen Schatteneffekt machen. Und noch etwas: Wenn es nicht um viel Text geht, sondern lediglich um einige Zeilen zum Beispiel für ein Spielmenü, dann sollte man das als Grafik behandeln. Man schreibt den Text mit schönster Antialiasing in einer Grafikprogramm und lädt das in das Spiel als BMP ein. |
||
Edlothiol |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Das geht alles nicht. Der Text muss auf einem Farbverlauf oder irgendeinem Bild ausgegeben werden können, und im Spiel veränderbar sein. Ich versuche grade ein bisschen was. Ist bei der Vorberechnung aber ein bisschen arg langsam. | ||
![]() |
Travis |
![]() Antworten mit Zitat ![]() |
---|---|---|
@ Triton
Die Idee ist wirklich gut. Ich habe sie mal umgesetzt. Es ist zwar nicht so gut wie "echtes" Anti Alisa, aber immerhin schon besser als ganz ohne! [img] http://home.t-online.de/home/D...iAlias.png [/img] Code: [AUSKLAPPEN] Graphics 800,600,16,2 AppTitle "Anti-Alias Simulation" Font1 = LoadFont("Verdana", 128, 0,0,0) Font2 = LoadFont("Verdana", 64, 0,0,0) ; --- Text in Bild umwandeln --- Bild = CreateImage(600,100) SetBuffer ImageBuffer(Bild) SetFont Font1 Text 0,-20, "Anti - Alias" ; --- Bild zur Kontrolle anzeigen --- SetBuffer FrontBuffer() DrawImage Bild ,0,0 Rect 0,0, 600,100,0 ; Bild verkleinert ausgeben ScaleImage Bild, .5,.5 DrawImage Bild, 0, 200 ; Standart Text SetFont Font2 Text 0, 250, "Anti - Alias" WaitKey End Das Ganze müsste man natürlich jetzt noch in eine Funktion umwandeln, die das alles automatisch macht und sich der Textlänge anpasst. |
||
www.funforge.org
Ich hasse WASD-Steuerung. Man kann alles sagen, man muss es nur vernünftig begründen können. |
![]() |
TheShadowModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
ein Trick von mir:
1 du erstellst mit einem Malprogramm einen Text mit Antialiasing (Hintergrund schwarz, Text weiß) - alle Buchstaben speicherst du als Grafikdatei. 2. Wenn du text malen musst, dann musst du jeden Pixel auslesen - je weißer der Pinkt ist, desto weniger durchsichtig wird es erscheinen... um es zu beschleunigen kannst du auch noch das machen: kopiere einen Ausschnitt wo dein text stehen soll in ein tmp-image. male dort deinen text rein und benutze dann dieses tmp-image für darstellung |
||
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2 |
Apocalyptic |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Oder du kaufst dir B+... Das hat nämlich automatisches Antialiasing für Text, zumindest wars so bei mir in der Demo. | ||
Suum cuique
[ www.ffs-net.de.vu ] [ Raycaster ] |
Edlothiol |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
@TheShadow: So ähnlich hab ichs auch gemacht 8)
Nur hab ich das nicht in ein Bild, sondern in eine Bank geladen, und die wurde automatisch generiert. Das braucht jedoch seine Zeit ![]() Es funktioniert auch noch nicht richtig, sieht nicht wirklich antialiased aus ![]() Edit: Juchu, Fehler gefunden, und hübsches Antialiasing! Ein paar Verbesserungen noch, und fertig. Edit 2: Ich schaffe mit der Funktion etwa 30 fps (Athlon XP 1700+, 256mb RAM, keine gute Grafikkarte ![]() Und noch ein Edit: Screen: ![]() Wie man sieht gibt es noch einige Fehler bei der Darstellung. |
||
![]() |
Travis |
![]() Antworten mit Zitat ![]() |
---|---|---|
Habe meins auch noch einmal überarbeitet. Man kann es jetzt durch eine Funktion aufrufen. Man muß nur beachten, daß die Schriftgröße um 50% verkleinert wird, wenn man den Font läd.
![]() Code: [AUSKLAPPEN] ; Anti-Alias Simulation ; Copyright (C) Feb 2004, Daniel Nobis ; thx to Triton für die Idee Graphics 800,600,16,2 AppTitle "Anti-Alias Simulation" Font1 = LoadFont("Verdana", 128, 0,0,0) AntiAliasText(Font1, "Anti - Alias", 20, 100) WaitKey End ; ---------- Anti-Alias-Funktion ---------- Function AntiAliasText(FontName, TextString$, x, y) ; Text in Bild umwandeln SetFont FontName Bild = CreateImage(StringWidth(TextString$),StringHeight(TextString$)) SetBuffer ImageBuffer(Bild) Text 0,0, TextString$ ; Simuliertes Anti-Alias ausgeben ScaleImage Bild, .5,.5 DrawImage Bild, x, y End Function ; ---------- Anti-Alias-Funktion ---------- |
||
www.funforge.org
Ich hasse WASD-Steuerung. Man kann alles sagen, man muss es nur vernünftig begründen können. |
![]() |
TheShadowModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
optimierungshinweis:
speichere in bank nur pixel die tatsächlich gelat werden - schwarze stellen können rausoptimiert werden - so kannst du Geschw. verdoppeln... |
||
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2 |
Edlothiol |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Wie meinst du das? Beim Zeichnen werden 0% Pixel übersprungen, und 100% werden direkt reingezeichnet. Oder meinst du sowas wie RLE? Dass die länge der transparenten Pixel gespeichert wird? | ||
![]() |
TheShadowModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
ja ich meine du hast weiße schrift - und du malst nur weiß auf den bildschirm, dann brauchst du das schwarze nicht malen... | ||
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2 |
Edlothiol |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Achso. Ich glaube ich weiß was du meinst ![]() Edit: Ich hab jetzt mal ein großes Vergleichs - Bild gemacht ![]() Hier! Leider konnte ich kein 8x8 Sampling benutzen, weil BB da keine Schrift mehr zurückgab ![]() Siehe übrigens Code Archiv. |
||
CodeMaster |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Also am schönsten finde ich immer noch das Windows-Antialiasing:
http://codemaster.art-fx.org/stuff/antialias.png Sieht meiner Meinung nach tausend mal besser aus als das Graustufenantialiasing. Hat schonmal jemand versucht, das nachzuprogrammieren? |
||
Dies ist ein Text, der an jeden Beitrag von dir angehängt werden kann. Es besteht eine Limit von 500 Buchstaben.
Zuletzt bearbeitet von CodeMaster am Mo Apr 01, Parse error: syntax error, unexpected ';' in htdocs\viewtopic.php on line 102 |
Edlothiol |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hm. In den Fenstern ist es ja nicht nur Antialiased, sondern auch mit Schatten. Das habe ich sogar schon versucht nachzubilden ![]() Woher hast du die anderen Schriftzüge? Dazu auch noch ein Bild: ![]() Mein Fake ist noch nicht so gelungen, aber das Antialiasing ist nicht schlechter, eher besser (das war 2x2 Sampling). |
||
CodeMaster |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Also die anderen Schriftzüge habe ich ganz einfach aus Paint, welches die Texte, wie auch Windows überall sonst, automatisch mit der von mir eingestellten Antialiasing-Stufe (nennt sich ClearType, es gibt verschiedene Antialiasingstärken) rendert. Es gibt so ein Tuning-Tool für Windows XP mit dem man allerlei schöne Sachen einstellen konnte, unter anderem auch das. Ich weiß allerdings leider nicht mehr, wie das hieß. | ||
Dies ist ein Text, der an jeden Beitrag von dir angehängt werden kann. Es besteht eine Limit von 500 Buchstaben.
Zuletzt bearbeitet von CodeMaster am Mo Apr 01, Parse error: syntax error, unexpected ';' in htdocs\viewtopic.php on line 102 |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group