Rotating text makes a pattern.

I didn't really understand scaling and rotating fonts, so wrote a test program to try the parameters over various ranges. Learned it rotates around bounding box bottom lefthand corner was one useful outcome.

A serendipitous outcome was this graphic! Uses cycling colours and rotates/scales the character '!' each time.

Cheered ME at least up- at present locked down at home for Covid19 isolation, with modem down ( so VERY slow access to web via mobile phone data in a one-bar-if-you-are-lucky house in a blackspot phone area), and with a plumbing fault that has meant we've had no hot water from taps for three months! At least the Spring garden and countryside are beautiful...


    global angle

    WindowWidth  =600
    WindowHeight =600

    open "test" for graphics_nsb as #mg

    #mg "trapclose [quit]"

    hw      = hwnd( #mg)

    calldll #user32, "GetDC", hw as ulong, hdc as ulong

    calldll #gdi32, "SetBkMode", hdc as long, 1 As long, result As long

    #mg "home ; fill darkblue ; color cyan ; backcolor darkblue"
    #mg "fill darkblue ; color cyan ; backcolor darkblue"

    weight      =  0    '   how much to emphasize /widen the strokes
    height      =470    '   how big to make font ?in pixels?

    for angle =0 to -10800 step -50'       3 revolutions-   rotates about bottom left-hand od character bounding box

        height =height -2               '  progressively reduce font size

        calldll #gdi32, "CreateFontA",_
                         height as long, 0 as long,_
                         angle  as long, angle  as long,_
                         weight as long,_
                                  0 as long, 0 as long, 0 as long, 0 as long, 0 as long, 0 as long, 0 as long, 0 as long,_
                                  "Arial" as ptr,_
                         hfont as ulong

        calldll #gdi32, "SelectObject", hdc as ulong, hfont as ulong, oldhfont as ulong

        #mg "color "; col$()
        #mg "place "; 300 +230 *sinR( t +deg); " "; 300 -230 *cosR( t +deg)
        #mg "\!"

        #mg "getbmp scr 0 0 600 600"
        'bmpsave "scr", "images3/scr" +str$( time$( "ms"))  +".bmp"

        timer 100, [p]
        timer 0

    next angle


    function col$() '   graduated colour cycling
        red     =int( 128 +127 *sin( angle /607))
        grn     =int( 128 +127 *cos( angle /845))
        blu     =int( 128 +127 *cos( angle /423))
        col$ =str$( red) +" " +str$( grn) +" " +str$( blu)
    end function

    calldll #user32, "ReleaseDC", hWnd as long, hdc as long, result as long
    close #mg