DrawText changing fonts, fontsize and colors
Posted: Mon Mar 03, 2008 11:20 am
DrawText changing fonts, fontsizes and colors
Have fun!
Code: Select all
;By einander
;PB 4.20 Beta 2 - march 2008
Global _DRAWING
Procedure AlignText(X,YAlign,Text.s,Font,RGB=-1,BackRGB=-1)
; ;Without RGB Param or RGB=-1, keeps previous RGB. Default=#Black
; ;Without BackRGB Param or BackRGB=-1, keeps previous BackRGB. Default=#White
Static X1,Y1,OldRGB,OldBACK
FontID=FontID(Font)
DrawingFont(FontID)
If RGB=-1 : RGB=OldRGB: EndIf
If BackRGB=-1
If OldBACK=RGB:BackRGB=#White
Else : BackRGB=OldBACK
EndIf
EndIf
If X=-1
If X1=0:X=0
Else:X=X1
EndIf
EndIf
If YAlign=-1
If Y1=0:YAlign=0
Else:YAlign=Y1
EndIf
EndIf
GetTextMetrics_(_DRAWING, TM.NEWTEXTMETRIC) ;to change text bottom position
X1=DrawText(X,YAlign-TM\tmAscent,Text,RGB,BackRGB)
Y1=YAlign
OldRGB=RGB : OldBACK=BackRGB
ProcedureReturn X1 ; x position for the next string
EndProcedure
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
;Test it
hwnd=OpenWindow(0, 100, 100,700,500 ,"Draw text aligned changing font sizes and colors", #WS_OVERLAPPEDWINDOW | #WS_MAXIMIZE)
CreateGadgetList(hwnd)
Wi=WindowWidth(0):He=WindowHeight(0)
ImGad=ImageGadget(-1,0,0,0,0,0)
IMG=CreateImage(-1,Wi,He,32)
Dim Font(5)
Font(0)=LoadFont(-1,"Arial",26)
Font(1)=LoadFont(-1,"Comic sans MS",30)
Font(2)=LoadFont(-1,"Times new Roman",22)
Font(3)=LoadFont(-1,"WingDings",18)
Font(4)=LoadFont(-1,"Courier New",12)
Font(5)=LoadFont(-1,"Courier New",24)
_DRAWING=StartDrawing(ImageOutput(IMG))
X=10 :YAlign=100
AlignText(X,YAlign,"Draw text aligned",Font(2),#Magenta)
AlignText(-1,-1, " changing",Font(1),#Yellow)
AlignText(-1,-1," font sizes and c",Font(2),#Red)
AlignText(-1,-1,"o",Font(0),#Green)
AlignText(-1,-1,"l",Font(1),#Magenta)
AlignText(-1,-1,"o",Font(5),#Cyan)
AlignText(-1,-1,"r",Font(0),#Yellow)
AlignText(-1,-1,"s",Font(4),#White)
X=10:YAlign=200 ; new line
AlignText(X,YAlign,"Arial 10",Font(0),#Red)
AlignText(-1,-1," Comic Sans MS 30",Font(1),$FFFCC2)
X1=AlignText(-1,-1," Times New Roman 22",Font(2),#Yellow)
LineXY(10,YAlign,X1,YAlign,$AABBCC)
YAlign=300 ; new line
AlignText(10,YAlign,"WingDings 18",Font(3))
AlignText(-1,-1," Courier new 12",Font(4),#Red,#Cyan)
X1=AlignText(-1,-1," Courier New 24",Font(5),0)
LineXY(0,YAlign,X1,YAlign,#Blue)
StopDrawing():_DRAWING=0
SetGadgetState(ImGad,ImageID(IMG))
Repeat
If GetAsyncKeyState_(#VK_ESCAPE):Break:EndIf
Ev=WaitWindowEvent()
Until Ev=#WM_CLOSE
For i = 0 To 5
FreeFont(Font(i))
Next
End