gambas-source-code/app/examples/Drawing/QuasiRegular/.src/FMain.class
Benoît Minisini c6a9cd69c2 [EXAMPLES]
* NEW: Add examples again. I hope correctly this time.


git-svn-id: svn://localhost/gambas/trunk@6726 867c0c6c-44f3-4631-809d-bfa615b0a4ec
2014-12-12 19:58:52 +00:00

87 lines
1.5 KiB
Text

' Gambas class file
Private $hImage As Image
Private Const GRID_SIZE As Integer = 64
Fast Private Sub Compute()
Dim hImage As New Image(3840, 2160, Color.White)
Dim I, J As Integer
Dim X, Y, XR, YR As Float
Dim CA, SA As Float
Dim bBlack As Boolean
Dim D As Float
D = Sqr(2) / 2
CA = D 'Cos(Rad(30))
SA = D 'Sin(Rad(30))
For J = 0 To hImage.H - 1
For I = 0 To hImage.W - 1
bBlack = False
X = Frac(I / GRID_SIZE)
Y = Frac(J / GRID_SIZE)
GoSub ADD_COLOR
XR = CA * I + SA * J
YR = CA * J - SA * I
X = Frac((XR + 1024) / GRID_SIZE)
Y = Frac((YR + 1024) / GRID_SIZE)
GoSub ADD_COLOR
' XR = CA * I - SA * J
' YR = CA * J + SA * I
'
' X = Frac((XR + 1024) / GRID_SIZE)
' Y = Frac((YR + 1024) / GRID_SIZE)
'
' GoSub ADD_COLOR
If bBlack Then hImage[I, J] = Color.Black
Next
Next
$hImage = hImage
Return
ADD_COLOR:
If X < 0.5 Then bBlack = Not bBlack
If Y < 0.5 Then bBlack = Not bBlack
Return
End
Public Sub Form_Open()
UpdateTitle
Compute
imvImage.Image = $hImage
End
Private Sub UpdateTitle()
Me.Title = "QuasiRegular (" & Format(imvImage.Zoom, "0%") & ")"
End
Public Sub imvImage_MouseWheel()
If Mouse.Forward Then
imvImage.Zoom = Min(32, imvImage.Zoom * Sqr(2))
Else
imvImage.Zoom = Max(0.25, imvImage.Zoom / Sqr(2))
Endif
UpdateTitle
End