_Title "Building a Scrolling LED Screen" ' b+ 2021-05-08 _Delay .25 'give screen time to load
'scroll some text
Text$ = "Try scrolling me for awhile until you got it, then press a key... "
startTextPos = 1
'put text in sign 15 chars wide in middle of screen print the message moving down 1 character evey frame
_Title "Building a Scrolling LED Screen: Step 1 get some code to scroll your message in middle of screen." ' two pieces of text? when get to end of text will have less than 15 chars to fill sign so get remainder from front
len1 = lenText - startTextPos
If len1
< 15 Then len2
= 15 - len1
Else len1
= 15: len2
= 0 ' locate at middle of screen for 15 char long sign
_PrintString ((1200 - 15 * 8) / 2, (160 / 2) - 8), Mid$(Text$
, startTextPos
, len1
) + Mid$(Text$
, 1, len2
) startTextPos = startTextPos + 1
If startTextPos
> lenText
Then startTextPos
= 1 _Display ' no blinking when clear screen so often _Limit 5 ' slow down to see scroll
' OK now for the enLARGE M E N T using _PutImage
' our little sign is 16 pixels high and 8 * 15 chars pixels wide = 120
sign
= _NewImage(120, 16, 32) ' we will store the print image here
' _PUTIMAGE [STEP] [(dx1, dy1)-[STEP][(dx2, dy2)]][, sourceHandle&][, destHandle&][, ][STEP][(sx1, sy1)[-STEP][(sx2, sy2)]][_SMOOTH]
' use same pixel location to _printString as for _PutImage Source rectangle ie (sx1, sy1), -step( sign width and height)
' test screen capture with _putimage and then blowup with _putimage
'_PutImage , 0, sign, ((1200 - 15 * 8) / 2, (160 / 2) - 8)-Step(119, 15)
'Cls
'_PutImage , sign, 0 ' stretch to whole screen
'_Display
'now that that works do it on the move
' about here I resized the screen to 1200 x 160 to make the text scalable X's 10 ie 120 x 10 wide and 16 x 10 high
_Title "Building a Scrolling LED Screen: Step 2 Blow it up by using _PutImage twice once to capture, then to expand" k$ = ""
' two pieces of text? when get to end of text will have less than 15 chars to fill sign so get remainder from front
len1 = lenText - startTextPos
If len1
< 15 Then len2
= 15 - len1
Else len1
= 15: len2
= 0 ' locate at middle of screen for 15 char long sign
_PrintString ((1200 - 15 * 8) / 2, (160 / 2) - 8), Mid$(Text$
, startTextPos
, len1
) + Mid$(Text$
, 1, len2
) _PutImage , 0, sign
, ((1200 - 15 * 8) / 2, (160 / 2) - 8)-Step(119, 15)
_PutImage , sign
, 0 ' stretch to whole screen _Display ' no blinking when clear screen so often _Limit 5 ' slow down to see scroll startTextPos = startTextPos + 1
If startTextPos
> lenText
Then startTextPos
= 1
' now for a mask just draw a grid test grid draw here
'For x = 0 To _Width Step 10 ' verticals
' Line (x, 0)-(x + 3, _Height), &HFF000000, BF
'Next
'For y = 0 To _Height Step 10
' Line (0, y)-(_Width, y + 3), &HFF000000, BF
'Next
_Title "Building a Scrolling LED Screen: Step 3 Mask or Cover the thing with a grid or grate." ' here is the whole code not including all setup variables from above
k$ = ""
' two pieces of text? when get to end of text will have less than 15 chars to fill sign so get remainder from front
len1 = lenText - startTextPos
If len1
< 15 Then len2
= 15 - len1
Else len1
= 15: len2
= 0 ' locate at middle of screen for 15 char long sign
_PrintString ((1200 - 15 * 8) / 2, (160 / 2) - 8), Mid$(Text$
, startTextPos
, len1
) + Mid$(Text$
, 1, len2
) _PutImage , 0, sign
, ((1200 - 15 * 8) / 2, (160 / 2) - 8)-Step(119, 15)
_PutImage , sign
, 0 ' stretch to whole screen
' now for a mask just draw a grid best to draw this and copy and layover screen as another layer
' here QB64 is fast evough to redarw each time
_Display ' no blinking when clear screen so often _Limit 5 ' slow down to see scroll startTextPos = startTextPos + 1
If startTextPos
> lenText
Then startTextPos
= 1