Font mit Anti-Aliasing

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
Benutzeravatar
Delle
Beiträge: 1132
Registriert: 10.05.2005 22:48

Font mit Anti-Aliasing

Beitrag von Delle »

Gibt's dafür ne Lib die automatisch AA-Fonts auf nem Screen darstellt?
Benutzeravatar
Spirit
Beiträge: 174
Registriert: 13.04.2005 19:09

Beitrag von Spirit »

Ich glaube das ist vom Font abhängig. Wenn ich mich nicht irre werden TrueType Fonts mit AA dargestellt und die anderen nicht (ist jedenfalls bei mir so).
Benutzeravatar
Delle
Beiträge: 1132
Registriert: 10.05.2005 22:48

Beitrag von Delle »

Ähm ich meine natürlich TTF (was auch sonst?) :-)

Bei BB war es automatisch mit AA... bei PB sehe ich davon nichts...
Benutzeravatar
Danilo
-= Anfänger =-
Beiträge: 2284
Registriert: 29.08.2004 03:07

Beitrag von Danilo »

Delle hat geschrieben:Ähm ich meine natürlich TTF (was auch sonst?) :-)

Bei BB war es automatisch mit AA... bei PB sehe ich davon nichts...
Probier mal dieses Beispiel.

Code: Alles auswählen

;
; display different fonts to see AntiAliasing
;
#w = 800
#h = 600
#n = "AA Font Test"

If InitSprite()=0 Or InitKeyboard()=0 Or InitMouse()=0
  MessageRequester("ERROR","Cant init screen engine !"):End
EndIf

If OpenScreen(#w,#h,32,#n)=0
 If OpenScreen(#w,#h,24,#n)=0
  If OpenScreen(#w,#h,16,#n)=0
   If OpenScreen(#w,#h,08,#n)=0
     MessageRequester("ERROR","Cant open screen !"):End
EndIf:EndIf:EndIf:EndIf

Font1 = LoadFont(1,"Arial",250)
Font2 = LoadFont(2,"Courier New",48)
Font3 = LoadFont(3,"Courier",48)

If CreateSprite(1,256,256)=0
  CloseScreen()
  MessageRequester("ERROR","Cant create sprite !"):End
Else
  If StartDrawing(SpriteOutput(1))
    For i = 0 To 255
      Line(0,i,256,0,RGB(Random($FF),Random($FF),Random($FF)))
    Next i
    StopDrawing()
  EndIf
EndIf

Repeat
  FlipBuffers()
  If IsScreenActive()
    ExamineKeyboard()
    If KeyboardPushed(#PB_Key_Escape)
      Break
    EndIf
    
    For y = 0 To #h-1 Step 256
      For x = 0 To #w-1 Step 256
        DisplaySprite(1,x,y)
      Next x
    Next y
    
    If StartDrawing(ScreenOutput())
      DrawingMode(1)
      FrontColor($FF,$FF,$00)
      Locate( 50, 50):DrawingFont(Font1):DrawText("Test")
      Locate(120,400):DrawingFont(Font2):DrawText("* Antialiased")
      Locate( 70,470):DrawingFont(Font3):DrawText("* Not Antialiased")
      StopDrawing()
    EndIf
  EndIf
ForEver
Bei mir funktioniert das bei Font1+Font2. Font3 ist ohne AA
weil er nicht wie die anderen TTF-Fonts direkt in der Größe
gezeichnet wird, sondern block-/pixelweise hochgezoomt.

Dadurch entstehen an Font3 auch keine runden Ecken. Gerade
Kanten werden nicht mit AA gezeichnet (siehe das große 'T'),
nur Rundungen.
cya,
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck
Benutzeravatar
Delle
Beiträge: 1132
Registriert: 10.05.2005 22:48

Beitrag von Delle »

Komisch, also bei mir sind alle 3 Fonts mit Kanten...
Antworten