PaintImage - just like Paint to a Border, you can Paint and image
Here is a demo:
Here is a demo:
Code: (Select All)
_Title "Brick Pattern Tile, click a spot to spray paint a brick image."
' 2019-11-22 new and improved use of BC to eliminate Border lines.
Const xmax = 800, ymax = 600
Screen _NewImage(xmax, ymax, 32)
_ScreenMove 300, 40
'make brick pattern
brickpat& = _NewImage(16, 16, 32)
_Dest brickpat&
Line (0, 0)-(_Width(brickpat&) - 1, _Height(brickpat&) - 1), _RGB32(128, 0, 0), BF
Line (0, 0)-(_Width(brickpat&) - 1, 0), _RGB32(200, 200, 200), BF
Line (0, 7)-(_Width(brickpat&) - 1, 8), _RGB32(200, 200, 200), BF
Line (0, 15)-(_Width(brickpat&) - 1, 15), _RGB32(200, 200, 200), BF
Line (0, 0)-(1, 8), _RGB32(200, 200, 200), BF
Line (7, 8)-(8, 15), _RGB32(200, 200, 200), BF
_Dest 0
Dim Shared BC As _Unsigned Long
BC = _RGB32(119, 17, 2)
While _KeyDown(27) = 0
While _MouseInput: Wend
mx = _MouseX: my = _MouseY: mb = _MouseButton(1)
If mb Then
r = r + 1
If r > 20 Then r = 1
Circle (mx, my), 50, BC
paintImage mx, my, BC, 0, brickpat&
End If
_Display
_Limit 60
Wend
Sub paintImage (x, y, Border~&, destHandle&, imageHandle&)
d = _Dest: s = _Source
_Dest destHandle&
Paint (x, y), BC, Border~&
For y = 0 To _Height(destHandle&)
For x = 0 To _Width(destHandle&)
_Source destHandle&
If Point(x, y) = BC Then
_Source imageHandle&
PSet (x, y), Point(x Mod _Width(imageHandle&), y Mod _Height(imageHandle&))
End If
Next
Next
_Dest d: _Source s
End Sub
b = b + ...