Text - Antialiasing

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

Edlothiol

Betreff: Text - Antialiasing

BeitragFr, Feb 27, 2004 11:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Gibt es irgendeine Bibliothek etc. für BB, mit der man geantialiasten Text ausgeben kann? Der normale ist doch ein bisschen unschön Wink

Travis

BeitragFr, Feb 27, 2004 11:39
Antworten mit Zitat
Benutzer-Profile anzeigen
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 Very Happy
www.funforge.org

Ich hasse WASD-Steuerung.

Man kann alles sagen, man muss es nur vernünftig begründen können.

Triton

BeitragFr, Feb 27, 2004 11:55
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragFr, Feb 27, 2004 12:48
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragFr, Feb 27, 2004 13:21
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragFr, Feb 27, 2004 13:36
Antworten mit Zitat
Benutzer-Profile anzeigen
@ 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.

TheShadow

Moderator

BeitragFr, Feb 27, 2004 15:57
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragFr, Feb 27, 2004 17:45
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragFr, Feb 27, 2004 18:08
Antworten mit Zitat
Benutzer-Profile anzeigen
@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 Confused
Es funktioniert auch noch nicht richtig, sieht nicht wirklich antialiased aus Sad Ich werds wohl noch weiter debuggen müssen.

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 Wink ) [ Der Text ist auch etwas länger und größer. Bei Texten mit normaler Schriftgröße gehen die FPS über 120. ]

Und noch ein Edit: Screen:
user posted image
Wie man sieht gibt es noch einige Fehler bei der Darstellung.

Travis

BeitragSa, Feb 28, 2004 0:58
Antworten mit Zitat
Benutzer-Profile anzeigen
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.
Very Happy

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.

TheShadow

Moderator

BeitragSa, Feb 28, 2004 13:42
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragSa, Feb 28, 2004 13:54
Antworten mit Zitat
Benutzer-Profile anzeigen
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?

TheShadow

Moderator

BeitragSa, Feb 28, 2004 14:26
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragSa, Feb 28, 2004 14:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Achso. Ich glaube ich weiß was du meinst Idea Die werden aber auch gar nicht gemalt.


Edit:
Ich hab jetzt mal ein großes Vergleichs - Bild gemacht Razz Ich hab bei Travis' Bild noch meine Techniken hinzugefügt und eine vergrößerte Version jeder Methode daneben.
Hier!
Leider konnte ich kein 8x8 Sampling benutzen, weil BB da keine Schrift mehr zurückgab Sad Menno, Word schafft Schriftgrößen von 512 und höher.

Siehe übrigens Code Archiv.
 

CodeMaster

BeitragSa, Feb 28, 2004 19:35
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragSa, Feb 28, 2004 20:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Hm. In den Fenstern ist es ja nicht nur Antialiased, sondern auch mit Schatten. Das habe ich sogar schon versucht nachzubilden Surprised Das war auch einer meiner Gründe für das Antialiasing.
Woher hast du die anderen Schriftzüge?

Dazu auch noch ein Bild:
user posted image
Mein Fake ist noch nicht so gelungen, aber das Antialiasing ist nicht schlechter, eher besser (das war 2x2 Sampling).
 

CodeMaster

BeitragSa, Feb 28, 2004 23:38
Antworten mit Zitat
Benutzer-Profile anzeigen
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

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group