Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #SingleInstance, Force
- #NoEnv
- SetBatchLines, -1
- DetectHiddenWindows, On
- SetWinDelay, -1
- pToken := Gdip_Startup()
- Windows := []
- Width := A_ScreenWidth, Height := A_ScreenHeight
- Gui, 1: -Caption +E0x80000 +LastFound +AlwaysOnTop +ToolWindow +OwnDialogs
- Gui, 1: Show
- Menu, MyMenu, UseErrorLevel
- OnMessage(0x20, "WM_SETCURSOR")
- OnMessage(0x02A3, "WM_MOUSELEAVE")
- hwnd1 := WinExist()
- GoSub, StartG
- ++WinCt
- pBrush1 := Gdip_BrushCreateSolid(0xffff0000)
- Window1 := {X: 100, Y: 500, W: 200, H: 300, FName: "Gdip_FillEllipse", Utensil: pBrush1, Color: "ff0000", Trans: "ff"}
- Gdip_FillEllipse(G, Window1["Utensil"], Window1["X"], Window1["Y"], Window1["W"], Window1["H"])
- ++WinCt
- pBrush2 := Gdip_BrushCreateSolid(0x660000ff)
- Window2 := {X: 250, Y: 80, W: 300, H: 200, FName: "Gdip_FillRectangle", Utensil: pBrush2, Color: "0000ff", Trans: 66}
- Gdip_FillRectangle(G, Window2["Utensil"], Window2["X"], Window2["Y"], Window2["W"], Window2["H"])
- UpdateLayeredWindow(hwnd1, hdc, 0, 0, Width, Height)
- GoSub, FinishG
- Return
- Esc::
- Exit:
- Gdip_Shutdown(pToken)
- ExitApp
- #If (MouseCon() = hwnd1)
- RButton::
- Loop, % WinCt
- {
- If (MX > Window%A_Index%["X"] && MX < Window%A_Index%["X"] + Window%A_Index%["W"] && MY > Window%A_Index%["Y"] && MY < Window%A_Index%["Y"] + Window%A_Index%["H"])
- WNum := A_Index
- }
- FormDesc := (Window%WNum%["FName"] = "Gdip_FillRectangle" || Window%WNum%["FName"] = "Gdip_DrawRectangle") ? "Round Edges" : (InStr(Window%WNum%["FName"], "Ellipse") || InStr(Window%WNum%["FName"], "Rounded")) ? "Square Edges"
- StringReplace, FormLabel, FormDesc, %A_Space%,, All
- Menu, MyMenu, DeleteAll
- Menu, MyMenu, Add, Resize Me, ReSizeShape
- Menu, MyMenu, Add, Change Color, ColorSlider
- Menu, MyMenu, Add, Change Transparency, ChangeTrans
- If (FormDesc)
- Menu, MyMenu, Add, %FormDesc%, %FormLabel%
- Menu, MyMenu, Show
- return
- #If
- ReSizeShape:
- Gui, 85: Add, Text,, New Width:
- Gui, 85: Add, Text,, New Height:
- Gui, 85: Add, Edit, vNewW ym, % Window%WNum%["W"]
- Gui, 85: Add, Edit, vNewH, % Window%WNum%["H"]
- Gui, 85: Add, Button, default gSubmitNewSize, Submit
- Gui, 85: Show,, Resize Your Window
- return
- SubmitNewSize:
- Gui, 85: Submit
- Gui, 85: Destroy
- If (!NewW || !NewH)
- {
- MsgBox Invalid Params
- return
- }
- Window%WNum%.Insert("W", NewW), Window%WNum%.Insert("H", NewH)
- GoSub, StartG
- Loop, % WinCt
- FName := Window%A_Index%["FName"], %FName%(G, Window%A_Index%["Utensil"], Window%A_Index%["X"], Window%A_Index%["Y"], Window%A_Index%["W"], Window%A_Index%["H"])
- UpdateLayeredWindow(hwnd1, hdc, 0, 0, Width, Height)
- GoSub, FinishG
- return
- RoundEdges:
- RectP := InStr(Window%WNum%["FName"], "Rectangle")
- NewFName := SubStr(Window%WNum%["FName"], 1, RectP - 1) . "Rounded" . SubStr(Window%WNum%["FName"], RectP)
- SmallestSide := (Window%WNum%["W"] < Window%WNum%["H"]) ? Window%WNum%["W"] : Window%WNum%["W"]
- Gui, 85: Add, Slider, % "vRoundedSlide gRoundedSlide +AltSubmit Range0-" . SmallestSide // 3, (Window%WNum%["R"]) ? Window%WNum%["R"] : 0
- Gui, 85: Add, Button, gSubmitShape, Submit
- Gui, 85: Show,, %FormDesc%
- return
- 85GuiClose:
- Gui, 85: Destroy
- GoSub, StartG
- Loop, % WinCt
- FName := Window%A_Index%["FName"], %FName%(G, Window%A_Index%["Utensil"], Window%A_Index%["X"], Window%A_Index%["Y"], Window%A_Index%["W"], Window%A_Index%["H"], Window%A_Index%["R"])
- UpdateLayeredWindow(hwnd1, hdc, 0, 0, Width, Height)
- GoSub, FinishG
- return
- RoundedSlide:
- GuiControlGet, RoundedSlide, 85:, RoundedSlide
- GoSub, StartG
- Loop, % WinCt
- {
- If (A_Index = WNum)
- %NewFName%(G, Window%A_Index%["Utensil"], Window%A_Index%["X"], Window%A_Index%["Y"], Window%A_Index%["W"], Window%A_Index%["H"], RoundedSlide)
- Else
- FName := Window%A_Index%["FName"], %FName%(G, Window%A_Index%["Utensil"], Window%A_Index%["X"], Window%A_Index%["Y"], Window%A_Index%["W"], Window%A_Index%["H"])
- }
- UpdateLayeredWindow(hwnd1, hdc, 0, 0, Width, Height)
- GoSub, FinishG
- return
- SubmitShape:
- Gui, Destroy
- Window%WNum%.Insert("FName", NewFName), Window%WNum%.Insert("R", RoundedSlide)
- return
- ChangeTrans:
- Gui, 85: Add, Slider, Invert vTransSlide gTransSlide +AltSubmit Range0-255, % "0x" . Window%WNum%["Trans"] + 0
- Gui, 85: Add, Button, gSubmitTrans, Submit
- Gui, 85: Show,, Change TransParency
- return
- TransSlide:
- GuiControlGet, TransSlide, 85:, TransSlide
- SetFormat, Integer, h
- TransSlide += 0
- SetFormat, Integer, d
- TransSlide := SubStr(TransSlide, 3)
- GoSub, StartG
- pTempBrush := Gdip_BrushCreateSolid("0x" . TransSlide . Window%WNum%["Color"])
- Loop, % WinCt
- {
- If (A_Index = WNum)
- FName := Window%A_Index%["FName"], %FName%(G, pTempBrush, Window%A_Index%["X"], Window%A_Index%["Y"], Window%A_Index%["W"], Window%A_Index%["H"], Window%A_Index%["R"])
- Else
- FName := Window%A_Index%["FName"], %FName%(G, Window%A_Index%["Utensil"], Window%A_Index%["X"], Window%A_Index%["Y"], Window%A_Index%["W"], Window%A_Index%["H"], Window%A_Index%["R"])
- }
- UpdateLayeredWindow(hwnd1, hdc, 0, 0, Width, Height)
- GoSub, FinishG
- return
- SubmitTrans:
- Gui, 85: Destroy
- Gdip_DeleteBrush(Window%WNum%["Utensil"])
- Window%WNum%.Insert("Trans", TransSlide), Window%WNum%.Insert("Utensil", pTempBrush)
- return
- StartG:
- hbm := CreateDIBSection(Width, Height)
- hdc := CreateCompatibleDC()
- obm := SelectObject(hdc, hbm)
- G := Gdip_GraphicsFromHDC(hdc)
- Gdip_SetSmoothingMode(G, 4)
- return
- FinishG:
- SelectObject(hdc, obm)
- DeleteObject(hbm)
- DeleteDC(hdc)
- Gdip_DeleteGraphics(G)
- return
- WM_SETCURSOR(wParam, lParam)
- {
- global
- If (HiWord(lParam) = 513)
- {
- MouseGetPos, MX, MY
- LastMX := MX, LastMY := MY
- WinNum := False
- Loop, % WinCt
- {
- If (MX > Window%A_Index%["X"] && MX < Window%A_Index%["X"] + Window%A_Index%["W"] && MY > Window%A_Index%["Y"] && MY < Window%A_Index%["Y"] + Window%A_Index%["H"])
- WinNum := A_Index
- }
- OnMessage(0x0202, "WM_MOUSELEAVE")
- }
- Else If (HiWord(lParam) = 512 && WinNum)
- {
- MouseGetPos, MX, MY
- WinMoved := True
- GoSub, StartG
- Loop, % WinCt
- {
- If (A_Index = WinNum)
- FName := Window%A_Index%["FName"], %FName%(G, Window%A_Index%["Utensil"], NewX := MX - LastMX + Window%A_Index%["X"], NewY := MY - LastMY + Window%A_Index%["Y"], Window%A_Index%["W"], Window%A_Index%["H"], Window%A_Index%["R"])
- Else
- FName := Window%A_Index%["FName"], %FName%(G, Window%A_Index%["Utensil"], Window%A_Index%["X"], Window%A_Index%["Y"], Window%A_Index%["W"], Window%A_Index%["H"], Window%A_Index%["R"])
- }
- UpdateLayeredWindow(hwnd1, hdc, 0, 0, Width, Height)
- GoSub, FinishG
- }
- }
- MouseCon()
- {
- global MX, MY
- MouseGetPos, MX, MY, Win
- return Win
- }
- HiWord(Param){
- return Param >> 16
- }
- LoWord(Param){
- return Param & 0xFFFF
- }
- WM_MOUSELEAVE()
- {
- global WinNum, MX, MY, NewX, NewY, WinMoved
- If (WinMoved)
- {
- WinMoved := False
- Window%WinNum%.Insert("X", NewX)
- Window%WinNum%.Insert("Y", NewY)
- }
- WinNum := False
- OnMessage(0x0202, "")
- }
- ColorSlider:
- Gui, 10: Destroy
- Gui, 10: Add, Picture, x70 y10 0xE v_VPRGS_ HWND_PRGS_ gChooseColor
- Gui, 10: Add, Picture, x35 y10 0xE v_VBAR HWND_BAR gInvoke_Slide
- Gui, 10: Add, Slider, Line10 NoTicks Range0-510 Vertical +AltSubmit +BackgroundTrans vCS gCS h526 x5 y2
- BAR := Gdip_CreateBitmap(15, 510)
- BG := Gdip_GraphicsFromImage(BAR)
- Gdip_SetSmoothingMode(BG, 1)
- Loop, 255
- {
- CS := A_Index, CSDiv := 42.5
- gosub, CalcCS
- B_PBRUSH:=Gdip_CreateLineBrushFromRect(0, A_Index*2-1, 15, 2, "0xFF" . HexFromRGB(CSR, CSG, CSB), "0xFF" . HexFromRGB(CSR, CSG, CSB), 0, 0)
- Gdip_FillRectangle(BG, B_PBRUSH, 0, A_Index*2-1, 15, 2)
- }
- B_HBITMAP:=Gdip_CreateHBITMAPFromBitmap(BAR)
- SetImage(_BAR, B_HBITMAP)
- CreateSpectrum(255, 0, 0, True)
- Gui, 10: Show, w600 h550 na
- return
- Invoke_Slide:
- MouseGetPos,, CSY
- CSY -= 33
- GuiControl, 10:, CS, % CSY
- CS:
- GuiControlGet, CS, 10:, CS
- CSDiv := 85
- gosub CalcCS
- CreateSpectrum(CSR, CSG, CSB)
- If (A_EventInfo = 4)
- {
- Gdip_DeleteGraphics(_G_)
- Gdip_DisposeImage(_PROGRESS_)
- DeleteObject(_HBITMAP_)
- }
- return
- CalcCS:
- If (CS//CSDiv = 0 || CS//CSDiv = 3)
- CSR := (CS//CSDiv = 0) ? 255 : 0, CSG := (CS//CSDiv = 0) ? 0 : 255, CSB := (CS//CSDiv = 0) ? Round((CS/CSDiv - CS//CSDiv) * 255) : 255 - Round((CS/CSDiv - CS//CSDiv) * 255)
- Else If (CS//CSDiv = 1 || CS//CSDiv = 4)
- CSR := (CS//CSDiv = 1) ? 255 - Round((CS/CSDiv - CS//CSDiv) * 255) : Round((CS/CSDiv - CS//CSDiv) * 255), CSG := (CS//CSDiv = 1) ? 0 : 255, CSB := (CS//CSDiv = 1) ? 255 : 0
- Else If (CS//CSDiv = 2 || CS//CSDiv = 5)
- CSR := (CS//CSDiv = 2) ? 0 : 255, CSG := (CS//CSDiv = 2) ? Round((CS/CSDiv - CS//CSDiv) * 255) : 255 - Round((CS/CSDiv - CS//CSDiv) * 255), CSB := (CS//CSDiv = 2) ? 255 : 0
- return
- ChooseColor:
- MouseGetPos, X, Y
- PixelGetColor, NewColor, % X, % Y, RGB
- Window%WNum%.Insert("Color", SubStr(NewColor, 3))
- GoSub, StartG
- Window%WNum%.Insert("Utensil", Gdip_BrushCreateSolid("0x" . Window%WNum%["Trans"] . Window%WNum%["Color"]))
- Loop, % WinCt
- {
- FName := Window%A_Index%["FName"], %FName%(G, Window%A_Index%["Utensil"], Window%A_Index%["X"], Window%A_Index%["Y"], Window%A_Index%["W"], Window%A_Index%["H"], Window%A_Index%["R"])
- }
- UpdateLayeredWindow(hwnd1, hdc, 0, 0, Width, Height)
- GoSub, FinishG
- return
- HexFromRGB(@colorR, @colorG, @colorB)
- {
- SetFormat Integer, Hex
- color := 0x1000000 + (@colorR << 16) + (@colorG << 8) + @colorB
- StringTrimLeft color, color, 3
- SetFormat Integer, D
- return color
- }
- CreateSpectrum(R=255,G=0,B=0,Setup=False)
- {
- global
- If (Setup)
- {
- _PROGRESS_:=Gdip_CreateBitmap(510, 510)
- _G_:=Gdip_GraphicsFromImage(_PROGRESS_)
- Gdip_SetSmoothingMode(_G_, 1)
- Loop, 255
- {
- _PBRUSH_:=Gdip_CreateLineBrushFromRect(0, A_Index*2-1, 510, 2, "0xFF" . HexFromRGB(256 - A_Index, 256 - A_Index, 256 - A_Index), "0xFF" . HexFromRGB(R - A_Index, 0, 0), 0, 0)
- Gdip_FillRectangle(_G_, _PBRUSH_, 0, A_Index*2-1, 510, 2)
- }
- }
- Else
- {
- Loop, 255
- {
- _PBRUSH_:=Gdip_CreateLineBrushFromRect(0, A_Index*2-1, 510, 2, "0xFF" . HexFromRGB(256 - A_Index, 256 - A_Index, 256 - A_Index), "0xFF" . HexFromRGB((R - Ceil(A_Index / Floor(256 / R)) < 0) ? 0 : R - Ceil(A_Index / Floor(256 / R)), (G - Ceil(A_Index / Floor(256 / G)) < 0) ? 0 : G - Ceil(A_Index / Floor(256 / G)), (B - Ceil(A_Index / Floor(256 / B)) < 0) ? 0 : B - Ceil(A_Index / Floor(256 / B))), 0, 0)
- Gdip_FillRectangle(_G_, _PBRUSH_, 0, A_Index*2-1, 510, 2)
- }
- }
- _HBITMAP_:=Gdip_CreateHBITMAPFromBitmap(_PROGRESS_)
- SetImage(_PRGS_, _HBITMAP_)
- SetImage(_PRGS_BU, _HBITMAP_)
- }
Add Comment
Please, Sign In to add comment