Тема: GDIp просадки FPS во время создания окна
Происходит создание текста без фона поверх всех окон , вплоть до полно-экранных режимов.
И в этом тексте есть переменная которая меняется по мере существования .
Как только создается новое окно - старое скрывается .
Чтоб не было наслоения "одного на другое ".
Но проблема в том что при создании окна - падает фпс на 12 и больше и фризы
В игре на шкале это видно, ровно через каждые 500мс - фриз .
Как избавится от фризов ?
#Include, gdiplus.ahk
settimer, ShowOverlay ,500
ShowOverlay:
; Start gdi+
If !pToken := Gdip_Startup()
{
MsgBox, 48, gdiplus error!, Gdiplus failed to start. Please ensure you have gdiplus on your system
ExitApp
}
OnExit, Exit
Width :=500, Height := 500
Gui, New, +Hwndhwnd
Gui, %hwnd%: -Caption +E0x80000 +LastFound +AlwaysOnTop +ToolWindow +OwnDialogs
Gui, %hwnd%: Show,x30 y30 NA
WinSet, ExStyle, +0x20, % "ahk_id " hwnd
hwnd1 := WinExist()
hbm := CreateDIBSection(Width, Height)
hdc := CreateCompatibleDC()
obm := SelectObject(hdc, hbm)
G := Gdip_GraphicsFromHDC(hdc)
Gdip_SetSmoothingMode(G, 4)
pBrush := Gdip_BrushCreateSolid(0xffff0000)
Gdip_DeleteBrush(pBrush)
pBrush := Gdip_BrushCreateSolid(0x660000ff)
Options = x10p y30p w80p Centre cbbffffff r4 s20 Underline Italic
Gdip_TextToGraphics(G, "test fps text", Options, Font, Width, Height)
UpdateLayeredWindow(hwnd1, hdc, 0, 0, Width, Height)
SelectObject(hdc, obm)
DeleteObject(hbm)
DeleteDC(hdc)
Gdip_DeleteGraphics(G)
Sleep, 500
gui, %hwnd%: hide
Return
Exit:
; gdi+ may now be shutdown on exiting the program
Gdip_Shutdown(pToken)
ExitApp