March 2014 update
This commit is contained in:
parent
09687c4926
commit
a25938f123
1846 changed files with 21876 additions and 5203 deletions
|
|
@ -0,0 +1,99 @@
|
|||
#NoEnv
|
||||
#SingleInstance, Force
|
||||
SetBatchLines, -1
|
||||
|
||||
; Parameters
|
||||
Width := 512, Height := Width/2*3**0.5, n := 8 ; iterations = 8
|
||||
|
||||
; Uncomment if Gdip.ahk is not in your standard library
|
||||
#Include ..\lib\Gdip.ahkl
|
||||
|
||||
If !pToken := Gdip_Startup() ; Start gdi+
|
||||
{
|
||||
MsgBox, 48, gdiplus error!, Gdiplus failed to start. Please ensure you have gdiplus on your system
|
||||
ExitApp
|
||||
}
|
||||
; I've added a simple new function here, just to ensure if anyone is having any problems then to make sure they are using the correct library version
|
||||
if (Gdip_LibraryVersion() < 1.30)
|
||||
{
|
||||
MsgBox, 48, Version error!, Please download the latest version of the gdi+ library
|
||||
ExitApp
|
||||
}
|
||||
OnExit, Exit
|
||||
|
||||
; Create a layered window (+E0x80000 : must be used for UpdateLayeredWindow to work!) that is always on top (+AlwaysOnTop), has no taskbar entry or caption
|
||||
Gui, -Caption +E0x80000 +LastFound +OwnDialogs +Owner +AlwaysOnTop
|
||||
Gui, Show
|
||||
hwnd1 := WinExist()
|
||||
OnMessage(0x201, "WM_LBUTTONDOWN")
|
||||
|
||||
, hbm := CreateDIBSection(Width, Height)
|
||||
, hdc := CreateCompatibleDC()
|
||||
, obm := SelectObject(hdc, hbm)
|
||||
, G := Gdip_GraphicsFromHDC(hdc)
|
||||
, Gdip_SetSmoothingMode(G, 4)
|
||||
|
||||
; Sierpinski triangle by subtracting triangles
|
||||
, pBrushBlack := Gdip_BrushCreateSolid(0xff000000)
|
||||
, rectangle := 0 "," 0 "|" 0 "," Height "|" Width "," Height "|" Width "," 0
|
||||
, Gdip_FillPolygon(G, pBrushBlack, rectangle, FillMode=0)
|
||||
|
||||
, pBrushBlue := Gdip_BrushCreateSolid(0xff0000ff)
|
||||
, triangle := Width/2 "," 0 "|" 0 "," Height "|" Width "," Height
|
||||
, Gdip_FillPolygon(G, pBrushBlue, triangle, FillMode=0)
|
||||
, Gdip_DeleteBrush(pBrushBlue)
|
||||
|
||||
, UpdateLayeredWindow(hwnd1, hdc, (A_ScreenWidth-Width)/2, (A_ScreenHeight-Height)/2, Width, Height)
|
||||
|
||||
, k:=2, x:=0, y:=0, i:=1
|
||||
Loop, % n
|
||||
{
|
||||
Sleep 0.5*1000
|
||||
While x*y<Width*Height
|
||||
{
|
||||
triangle := x "," y "|" x+Width/2/k "," y+Height/k "|" x+Width/k "," y
|
||||
, Gdip_FillPolygon(G, pBrushBlack, triangle, FillMode=0)
|
||||
, x += Width/k
|
||||
, (x >= Width) ? (x := i*Width/2/k, y += Height/k, i:=!i) : ""
|
||||
}
|
||||
UpdateLayeredWindow(hwnd1, hdc, (A_ScreenWidth-Width)/2, (A_ScreenHeight-Height)/2, Width, Height)
|
||||
, k*=2, x:=0, y:=0, i:=1
|
||||
}
|
||||
|
||||
Gdip_DeleteBrush(pBrushBlack)
|
||||
|
||||
, UpdateLayeredWindow(hwnd1, hdc, (A_ScreenWidth-Width)/2, (A_ScreenHeight-Height)/2, Width, Height)
|
||||
Sleep, 1*1000
|
||||
|
||||
; Bonus: Sierpinski triangle by random dots
|
||||
Gdip_GraphicsClear(G, 0xff000000)
|
||||
, pBrushBlue := Gdip_BrushCreateSolid(0xff0000ff)
|
||||
, x1:=Width/2, y1:=0, x2:=0, y2:=Height, x3:=Width, y3:=Height
|
||||
, x:= Width/2, y:=Height/2 ; I'm to lazy to pick a random point.
|
||||
Loop, % n
|
||||
{
|
||||
Loop, % 10*10**(A_Index/2)
|
||||
{
|
||||
Random, rand, 1, 3
|
||||
x := abs(x+x%rand%)/2
|
||||
, y := abs(y+y%rand%)/2
|
||||
, Gdip_FillEllipse(G, pBrushBlue, x, y, 1, 1)
|
||||
}
|
||||
UpdateLayeredWindow(hwnd1, hdc, (A_ScreenWidth-Width)/2, (A_ScreenHeight-Height)/2, Width, Height)
|
||||
Sleep, 0.5*1000
|
||||
}
|
||||
SelectObject(hdc, obm)
|
||||
, DeleteObject(hbm)
|
||||
, DeleteDC(hdc)
|
||||
, Gdip_DeleteGraphics(G)
|
||||
Return
|
||||
|
||||
Exit:
|
||||
Gdip_Shutdown(pToken)
|
||||
ExitApp
|
||||
|
||||
WM_LBUTTONDOWN()
|
||||
{
|
||||
If (A_Gui = 1)
|
||||
PostMessage, 0xA1, 2
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue