Schrift mit Schatten

Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Neue Antwort erstellen

faggie

Betreff: Schrift mit Schatten

BeitragSa, Okt 21, 2006 19:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo!

Wenn ich mit BlitzMax einen Text ausgebe, wird der pixelig dargestellt, d.h. es ist kein Übergang zwischen Text und Hintergrund vorhanden.

Das einzigste, was ich brauche ist ja im Prinzip ein Schatten, der einen weichen Übergang zwischen Text und Hintergrund darstellt.

Hier ein übertriebenes Beispiel zur Verdeutlichung:
user posted image

Wie kann man soetwas realisieren?
Gibt es eventuell schon eine Funktion dafür?

Gruß,
faggie

BladeRunner

Moderator

BeitragSa, Okt 21, 2006 19:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Du könntest den Text erst dunkler ausgeben und um ein oder 2 pixel versetzt, dann Farbe ändern und ihn nochmal rendern.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

simi

BeitragSa, Okt 21, 2006 19:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Eventuell hilft schon SetBlend ALPHABLEND .....

rema

BeitragSo, Okt 22, 2006 8:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Ein guter Tip: verwende die Cairo Blibliothek! Da kannst du echt coole Sachen machen.

Hier die Hauptseite: http://cairographics.org/ , die Tutorials sind nicht gerade berauschend, aber ausreichend.

Hier die Samples: http://cairographics.org/samples/text.html

Hier kannst du die Bibliothek für BMax runterladen: http://www.brucey.net/programming/blitz/ , unter MacG5 ist das aber so eine Sachen. Mit IntelMac oder halt Windows & Linux ist es kein Problem.

Mehr Infos findest du auch noch im eng. Forum: http://www.blitzbasic.com/Comm...s=BlitzMax

faggie

BeitragSo, Okt 22, 2006 11:59
Antworten mit Zitat
Benutzer-Profile anzeigen
@rema: Leider funktioniert die Bibliothek bei mir nicht. Sad

shure_kyu

Newsposter

BeitragSo, Okt 22, 2006 12:06
Antworten mit Zitat
Benutzer-Profile anzeigen
hier haste ne lib von mir wo so einiges drin is, müsste dir also helfen...
is zwar blitzbasic aber lässt sich bestimmt schnell convertieren.

user posted image

Code: [AUSKLAPPEN]
Const SPEED=2

Graphics 640,480,16,2
SetBuffer BackBuffer()
ClsColor 100, 100, 100
Cls
Text_Word$="WWW.BlitzForum.DE"
fntArial = LoadFont( "Arial", 32, True, False, False )
fntArial2 = LoadFont( "Arial", 32, True, False, False )
X=600


While Not KeyDown(1)

        zText( fntArial, X, 10 ,Text_Word$, 100, 100, 100, 0, 50 )
        zText( fntArial, X, 60 ,Text_Word$, 100, 100, 100, 1, 50 )
        zText( fntArial, X, 110,Text_Word$, 200, 200, 200, 2, 50, 4, 4 )
        zText( fntArial, X, 170,Text_Word$, 200, 200, 200, 3, 50, 16, 135 )
        zText( fntArial, X, 230,Text_Word$, 255, 0, 0, 4, 255, 255, 255 )
        zText( fntArial, X, 280,Text_Word$, 255, 255, 255, 5, 0 )
        zText( fntArial, X, 330,Text_Word$, 255, 255, 255, 5, 1 )
        zText( fntArial, X, 390,Text_Word$, 255, 255, 0, 6, 255, 0, 0 )
        X=X-SPEED
        If Len(Text_Word$)>X+1200 Then X=600
        Flip:Cls
Wend
End

;----------------------------------------------------------------------------------------------------
; INPUTS:                                        X, Y, TXT$, R, G, B, MODE + 3 optional parameters
;        BEVEL:                          PARM1 = HIGHLIGHT STRENGTH
;        EMBROSS:                        PARM1 = HIGHLIGHT STRENGTH
;        DROP SHADOW:                    PARM1 = SHADOW GREY COLOR (0-255) , PARM2 = X-OFFSET , PARM3 = Y-OFFSET
;        3D SHADOW:                      PARM1 = SHADOW GREY COLOR (0-255) , PARM2 = SHADOW DEPTH , PARM3 = SHADOW ANGLE
;        OUTLINE:                        PARM1 = OUTLINE RED, PARM2 = OUTLINE GREEN , PARM3 = OUTLINE BLUE
;        MIRRORED:                       PARM1 = 0=HORIZONTAL , 1=VERTICAL
;        GRADIENT:                       PARM1 = GRADIENT RED , PARM2 = GRADIENT GREEN , PARM3 = GRADIENT BLUE
;        SINE:                           PARM1 = STARTING VALUE , PARM2 = AMPLITUDE , PARM3 = FREQUENCY
;        CIRCLE:                         PARM1 = STARTING VALUE , PARM2 = DEGREES , PARM3 = RADIUS
; RETURNS:                               nix
;---------------------------------------------------------------------------------------------------
Function zText( FONT, X, Y, TXT$, R, G, B, MODE, PARM1=0, PARM2=0, PARM3=0 )
        SetFont FONT
        Select MODE
                Case 0        ; BEVEL
                        Color R + PARM1, G + PARM1, B + PARM1
                        Text X-1, Y-1, TXT$
                        Color R - PARM1, G - PARM1, B - PARM1
                        Text X+1, Y+1, TXT$
                        Color R, G, B
                        Text X, Y, TXT$
                Case 1        ; EMBROSS
                        Color R + PARM1, G + PARM1, B + PARM1
                        Text X+1, Y+1, TXT$
                        Color R - PARM1, G - PARM1, B - PARM1
                        Text X-1, Y-1, TXT$
                        Color R, G, B
                        Text X, Y, TXT$
                Case 2        ; DROP SHADOW
                        Color PARM1, PARM1, PARM1
                        Text X + PARM2, Y + PARM3, TXT$
                        Color R, G, B
                        Text X, Y, TXT$
                Case 3        ; 3D SHADOW
                        Color PARM1, PARM1, PARM1
                        For i = 0 To PARM2
                                Text X + Sin( PARM3 ) * i, Y + Cos( PARM3 ) * i, TXT$
                        Next
                        Color R, G, B
                        Text X, Y, TXT$
                Case 4        ; OUTLINE
                        Color PARM1, PARM2, PARM3
                        For yy = -1 To 1
                        For xx = -1 To 1
                                Text X + xx, Y + yy, TXT$
                        Next
                        Next
                        Color R, G, B
                        Text X, Y, TXT$
                Case 5        ; MIRRORED
                        temp = CreateImage( StringWidth( TXT$ ), StringHeight( TXT$ ) )
                        buffer = GraphicsBuffer()
                        SetBuffer ImageBuffer( temp )
                        SetFont FONT
                        Color R, G, B
                        Text 0, 0, TXT$
                        SetBuffer buffer
                        Select PARM1
                                Case 0        ; HORIZONTAL
                                        For i = 0 To ImageWidth( temp )-1
                                                DrawImageRect temp, X, Y + ImageHeight( temp )-1-i, 0, i, ImageWidth( temp ), 1
                                        Next
                                Case 1        ; VERTICAL
                                        For i = 0 To ImageWidth( temp )-1
                                                DrawImageRect temp, X + ImageWidth( temp )-1-i, Y, i, 0, 1, ImageWidth( temp )
                                        Next
                        End Select
                        FreeImage temp
                Case 6        ; GRADIENT
                        temp = CreateImage( StringWidth( TXT$ ), StringHeight( TXT$ ) )
                        buffer = GraphicsBuffer()
                        SetBuffer ImageBuffer( temp )
                        SetFont FONT
                        Color 255, 255, 255
                        Text 0, 0, TXT$
                        LockBuffer ImageBuffer( temp )
                        rr# = R : gg# = G : bb# = B
                        rstep# = ( R - PARM1 ) / ImageHeight( temp )
                        gstep# = ( G - PARM2 ) / ImageHeight( temp )
                        bstep# = ( B - PARM3 ) / ImageHeight( temp )
                        For yy = 0 To ImageHeight( temp )-1
                                For xx = 0 To ImageWidth( temp )-1
                                        If ( ReadPixelFast( XX, YY, ImageBuffer( temp ) ) And $FFFFFF ) <>  $000000 Then
                                                rgb = Int( rr# ) Shl 16 + Int( gg# ) Shl 8 + Int( bb# )
                                                WritePixelFast XX, YY, rgb, ImageBuffer( temp )
                                        End If
                                Next
                                rr# = rr# - rstep# : gg# = gg# - gstep# : bb# = bb# - bstep#
                        Next
                        UnlockBuffer ImageBuffer( temp )
                        SetBuffer buffer
                        DrawImage temp, X, Y
                        FreeImage temp
                Case 7        ; SINE
                        temp = CreateImage( StringWidth( TXT$ ), StringHeight( TXT$ ) )
                        buffer = GraphicsBuffer()
                        SetBuffer ImageBuffer( temp )
                        SetFont FONT
                        Color R, G, B
                        Text 0, 0, TXT$
                        SetBuffer buffer
                        start = PARM1
                        For i = 0 To ImageWidth( temp )-1
                                DrawImageRect temp, X + i, Y + Sin( start ) * PARM2, i, 0, 1, ImageHeight( temp )
                                start = start + PARM3
                        Next
                        FreeImage temp
                Case 8        ; CIRCLE
                        chars = Len( TXT$ )
                        angle# = PARM1
                        dist# = PARM2 / chars
                        For i = 0 To chars-1
                                Text X + Cos( angle# ) * PARM3, Y + Sin( angle# ) * PARM3, Mid( TXT$, i+1, 1 )
                                angle# = angle# + dist#
                        Next
        End Select
End Function

_______//¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯\________
◄Blitz 3D/MAX • PC - 2x 3.16Ghz, 4GB-Ram, ATi HD 4890 1024MB• win7 • site$ Rush2Play ° My-Htc.de
¯¯¯¯¯¯¯\__________________________________________________________________________//¯¯¯¯¯¯¯¯
BBP-RSS FEED Halt dich auf dem laufenden!
(C)Shure_kyu

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group