GdipText(str1, str2:="", options:="", ColorBG:="FFFFFF", Font:="Microsoft YaHei UI"){
	global
	static init:=0, @TSF:=0, DPI:=A_ScreenDPI/96, MaxScreenWidth:=DllCall("GetSystemMetrics", "Int", 78)
	If (str1=""){
		If (init){
			Gdip_Shutdown(init), init:=0
			Gui, TSF: Destroy
		}
		Return
	} Else If (!init){
		If (!init:=Gdip_Startup()){
			MsgBox, 48, GDIPlus Error!, GDIPlus failed to start. Please ensure you have gdiplus on your system, 5
			ExitApp
		}
		Gui, TSF: -Caption +E0x80000 +LastFound +AlwaysOnTop +ToolWindow +DPIScale +hwnd@TSF
		Gui, TSF: Show, NA
	}
	RegExMatch(Options, "i)H(?!(entre|enter))([a-f\d]+)", Colour_Code)
	RegExMatch(Options, "i)C(?!(entre|enter))([a-f\d]+)", Colour)
	Colour_Code :=RegExReplace(Colour_Code,"i)^H","c")
	RegExMatch(Options, "i)S(\d+)", Size)
	RegExMatch(Options, "i)X(\d+)", xpos)
	RegExMatch(Options, "i)Y(\d+)", ypos)
	If (xpos="")||(ypos="")
		Return
	; 测量字符像素
	hbm := CreateDIBSection(1, 1), hdc := CreateCompatibleDC()
	obm := SelectObject(hdc, hbm), G := Gdip_GraphicsFromHDC(hdc)
	CreateRectF(RC, 0, 0, A_ScreenWidth*2, A_ScreenHeight*2)
	hFamily := Gdip_FontFamilyCreate(Font), hFont := Gdip_FontCreate(hFamily, Size1*DPI, 0)
	hFormat := Gdip_StringFormatCreate(0x4000)
	h1:=StrSplit(Gdip_MeasureString(G, str1, hFont, hFormat, RC), "|")[4]
	ReturnRC_Code:=StrSplit(Gdip_MeasureString(G, str1, hFont, hFormat, RC), "|")
	ReturnRC_Hx:=StrSplit(Gdip_MeasureString(G, str2, hFont, hFormat, RC), "|")
	SelectObject(hdc, obm), DeleteObject(hbm), DeleteDC(hdc), Gdip_DeleteGraphics(G)
	; 设置界面像素
	Width_Code:=ReturnRC_Code[3]+15, Height_Code:=ReturnRC_Code[4]+10
	Width_Hx:=ReturnRC_Hx[3]+15, Height_Hx:=ReturnRC_Hx[4]+10
	hbm := CreateDIBSection(srf_for_select_Array.Length()<1&&srf_for_select_for_tooltip=""?Width_Code:Width_Hx>Width_Code?Width_Hx:Width_Code, srf_for_select_Array.Length()<1&&srf_for_select_for_tooltip=""?Height_Code:Height_Code+Height_Hx), hdc := CreateCompatibleDC()
	obm := SelectObject(hdc, hbm), G := Gdip_GraphicsFromHDC(hdc)
	Gdip_SetSmoothingMode(G, 2), pBrush := Gdip_BrushCreateSolid("0xFF" ColorBG)
	pLine := Gdip_CreatePen("0xFF" Colour, 1),pPen := Gdip_Line ~="on"?Gdip_CreatePen("0xFF" Colour, 2):Gdip_CreatePen("0xFF" ColorBG, 1), Gdip_DrawRoundedRectangle(G, pPen, 0, 0, srf_for_select_Array.Length()<1&&srf_for_select_for_tooltip=""?(Width_Code-2):(Width_Hx-2>Width_Code-2?Width_Hx-2:Width_Code-2), srf_for_select_Array.Length()<1&&srf_for_select_for_tooltip=""?(Height_Code-2):(Height_Code+Height_Hx-2), (Radius ="on"?8:0))
	Gdip_FillRoundedRectangle(G, pBrush, 0, 0, srf_for_select_Array.Length()<1&&srf_for_select_for_tooltip=""?(Width_Code-2):(Width_Hx-2>Width_Code-2?Width_Hx-2:Width_Code-2), srf_for_select_Array.Length()<1&&srf_for_select_for_tooltip=""?(Height_Code-2):(Height_Code+Height_Hx-2), (Radius ="on"?8:0))
	Gdip_TextToGraphics(G, str1, "x4 y0p vCenter cff" Colour_Code " s" Size1*DPI, Font, Width_Code, Height_Code),Gdip_TextToGraphics(G, str2, "x8 y0p vCenter cff" Colour " s" Size1*DPI, Font, Width_Hx,(Height_Code+Height_Hx+Size1*DPI+Size1*Gdip_Down/10))
	srf_for_select_Array.Length()>0&&Gdip_Line ~="off"||srf_for_select_for_tooltip<>""&&Gdip_Line ~="off"?(Gdip_DrawLine(G, pLine, 0, h1+5, Width_Hx-3>Width_Code-3?Width_Hx-3:Width_Code-3, h1+5) , Gdip_DeletePen(pLine)):""
	; 识别扩展屏，双屏
	If xpos1<A_ScreenWidth
		ScreenWidth:=A_ScreenWidth, Left:=0
	Else
		ScreenWidth:=MaxScreenWidth, Left:=A_ScreenWidth
	UpdateLayeredWindow(@TSF, hdc, Min(xpos1, Max(Left, ScreenWidth-Width_Hx-Width_Code)), Min(ypos1, Max(0, A_ScreenHeight-Height_Code-Height_Hx)), (srf_for_select_Array.Length()<1&&srf_for_select_for_tooltip=""?Width_Code:Width_Hx>Width_Code-2?Width_Hx:Width_Code), srf_for_select_Array.Length()<1&&srf_for_select_for_tooltip=""?Height_Code:Height_Code+Height_Hx)
	SelectObject(hdc, obm), DeleteObject(hbm), DeleteDC(hdc), Gdip_DeleteBrush(pBrush)
	Gdip_DeleteGraphics(G)
}