DrawText(Texte$) Vertical
Publié : sam. 17/sept./2005 17:28
Ehuu comment on fait ?
Est ce qu'il ya une commande ou il faut la faire soi même ?
Est ce qu'il ya une commande ou il faut la faire soi même ?
Code : Tout sélectionner
Enumeration
#Window_Main
EndEnumeration
#AW_HOR_POSITIVE = $1 ; Animates the window from left to right. This flag can be used with roll or slide animation.
#AW_HOR_NEGATIVE = $2 ; Animates the window from right to left. This flag can be used with roll or slide animation.
#AW_VER_POSITIVE = $4 ; Animates the window from top to bottom. This flag can be used with roll or slide animation.
#AW_VER_NEGATIVE = $8 ; Animates the window from bottom to top. This flag can be used with roll or slide animation.
#AW_CENTER = $10 ; Makes the window appear to collapse inward if AW_HIDE is used or expand outward if the AW_HIDE is not used.
#AW_HIDE = $10000 ; Hides the window. By default, the window is shown.
#AW_ACTIVATE = $20000 ; Activates the window.
#AW_SLIDE = $40000 ; Uses slide animation. By default, roll animation is used.
#AW_BLEND = $80000 ; Uses a fade effect. This flag can be used only if hwnd is a top-level window.
Procedure DrawRotatedText(Image.l, Text.s, x.l, y.l, FontName.s, Size.l, Angle.l, Weight.l, Italic.l, Underline.l, StrikeOut.l, BackgroundColor.l, ForegroundColor.l, DrawingMode.l)
UseImage(Image)
ImageDC.l = StartDrawing(ImageOutput())
hFont.l = CreateFont_(Size * GetDeviceCaps_(ImageDC, #LOGPIXELSY) / 72, 0, Angle * 10, 0, Weight, Italic, Underline, StrikeOut, #ANSI_CHARSET, #OUT_TT_PRECIS, #CLIP_LH_ANGLES, #PROOF_QUALITY, #DEFAULT_PITCH |#FF_DONTCARE, FontName)
PreviousFont.l = SelectObject_(ImageDC, hFont)
Locate(x, y)
DrawingMode(DrawingMode)
BackColor(Red(BackgroundColor), Green(BackgroundColor), Blue(BackgroundColor))
FrontColor(Red(ForegroundColor), Green(ForegroundColor), Blue(ForegroundColor))
DrawText(Text)
StopDrawing()
SelectObject_(ImageDC, PreviousFont)
DeleteObject_(hFont)
EndProcedure
Procedure DrawBackgroundImage(ImageWidth, ImageHeight, Text.s, BackgroundColor.l, TextColor.l, Spacing.l)
Static ImageNumber
If ImageNumber
FreeImage(ImageNumber)
EndIf
ImageNumber = CreateImage(#PB_Any, ImageWidth, ImageHeight)
ImageID = UseImage(ImageNumber)
StartDrawing(ImageOutput())
Box(0, 0, ImageWidth, ImageHeight, BackgroundColor)
StopDrawing()
For x = 0 To ImageWidth
For y = 0 To ImageHeight
DrawRotatedText(ImageNumber, Text, x, y, "Verdana", 12, 90, 100, #False, #False, #False, #Black, TextColor, 1)
y + Spacing - 1
Next
x + Spacing - 1
Next
ProcedureReturn ImageID
EndProcedure
WindowWidth = 640
WindowHeight = 480
WindowTitle.s = "MyWindow"
If OpenWindow(#Window_Main, 0, 0, WindowWidth, WindowHeight, #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered | #PB_Window_Invisible, WindowTitle)
SetWinBackgroundImage(WindowID(#Window_Main), DrawBackgroundImage(WindowWidth, WindowHeight, WindowTitle, WindowBackgroundColor = $300000, WindowFiligreeColor = $600000, Spacing = 60))
AnimateWindow_(WindowID(#Window_Main), 1000, #AW_BLEND | #AW_ACTIVATE)
AddKeyboardShortcut(#Window_Main, #PB_Shortcut_Escape, #PB_Shortcut_Escape)
AddKeyboardShortcut(#Window_Main, #PB_Shortcut_F1, #PB_Shortcut_F1)
If CreateGadgetList(WindowID(#Window_Main))
EndIf
Quit = #False
Repeat
Select WindowEvent()
Case #PB_Event_CloseWindow
Quit = #True
Case #PB_Event_Menu
Select EventMenuID()
Case #PB_Shortcut_Escape
Quit = #True
Case #PB_Shortcut_F1
Statistics = 1 - Statistics
EndSelect
Case #PB_Event_SizeWindow
WindowWidth = WindowWidth()
WindowHeight = WindowHeight()
If WindowWidth < 100
WindowWidth = 100
EndIf
If WindowHeight < 100
WindowHeight = 100
EndIf
SetWinBackgroundImage(WindowID(#Window_Main), DrawBackgroundImage(WindowWidth, WindowHeight, WindowTitle, WindowBackgroundColor = $300000, WindowFiligreeColor = $600000, Spacing = 60))
EndSelect
StartDrawing(WindowOutput())
If Statistics
BackColor(0, 0, 40)
FrontColor(255, 255, 255)
Locate(10, 10)
DrawText("FPS : " + Str(FPS))
EndIf
StopDrawing()
NFrames + 1
If ElapsedMilliseconds() - tz => 1000
FPS = NFrames
NFrames = 0
tz = ElapsedMilliseconds()
EndIf
Delay(1)
Until Quit
AnimateWindow_(WindowID(#Window_Main), 1000, #AW_BLEND | #AW_HIDE)
EndIf
End