Author Topic: Anyone know how to make letters with a transparent background?  (Read 4401 times)

0 Members and 1 Guest are viewing this topic.

Offline Petr

  • Forum Resident
  • Posts: 1720
  • The best code is the DNA of the hops.
    • View Profile
Re: Anyone know how to make letters with a transparent background?
« Reply #15 on: May 24, 2019, 05:01:16 pm »
Quote
COLOR 0,0 can really cut down on typos.
This is Braill mode  :-D

Offline Pete

  • Forum Resident
  • Posts: 2361
  • Cuz I sez so, varmint!
    • View Profile
Re: Anyone know how to make letters with a transparent background?
« Reply #16 on: May 24, 2019, 05:14:59 pm »
Code: QB64: [Select]
  1.    
Want to learn how to write code on cave walls? https://www.tapatalk.com/groups/qbasic/qbasic-f1/

Offline Pete

  • Forum Resident
  • Posts: 2361
  • Cuz I sez so, varmint!
    • View Profile
Re: Anyone know how to make letters with a transparent background?
« Reply #17 on: May 24, 2019, 07:16:04 pm »
Well, that's the last time I take a "Tip of the Day" from Jack. Anyway, Here's Marks white-yellow-orange blend in a scallable version, meaning you can change the screen width and height variables, wdt and hgt, as desired.

Code: QB64: [Select]
  1. wdt = 340
  2. hgt = 580
  3. SCREEN _NEWIMAGE(wdt, hgt, 32)
  4. _SCREENMOVE 500, 100
  5. FOR l = 0 TO hgt * .45
  6.     midInk 255, 255, 255, 255, 255, 0, l / (hgt * .45)
  7.     LINE (wdt - 1, l)-(0, l)
  8.  
  9.     midInk 255, 255, 0, 255, 100, 0, l / (hgt * .45)
  10.     LINE (wdt - 1, l + hgt * .45 + 0)-(0, l + hgt * .45 + 0)
  11.  
  12.     midInk 255, 100, 0, 60, 25, 0, l / (hgt * .45)
  13.     LINE (wdt - 1, l + (hgt * .45 + 0) * 2)-(0, l + (hgt * .45 + 0) * 2)
  14.  
  15.  
  16. CALL getparagraph(wdt, hgt, x$)
  17. COLOR _RGB32(0, 0, 0)
  18. ' Center with: _PRINTSTRING ((_WIDTH - LEN(s$) * 8) / 2, 232), s$
  19. LOCATE 1, 1
  20. REDIM q$(hgt \ 16)
  21. m = 1
  22.     q$ = MID$(x$, m, wdt \ 8)
  23.     i = _INSTRREV(q$, " ")
  24.     IF i = 0 THEN m = m + wdt \ 8 ELSE m = m + i
  25.     q$ = MID$(q$, 1, i)
  26.     j = 0: xq$ = q$
  27.     DO
  28.         j = j + 1
  29.         z$ = MID$(x$, m, j)
  30.         IF z$ <> " " THEN EXIT DO
  31.         xq$ = xq$ + z$
  32.         m = m + 1
  33.     LOOP
  34.     cnt = cnt + 1
  35.     q$(cnt) = xq$
  36.     PRINT MID$(q$(cnt), 1, wdt \ 8);
  37.     IF cnt = hgt \ 16 - 1 THEN EXIT DO
  38.  
  39. SUB midInk (r1%, g1%, b1%, r2%, g2%, b2%, fr##)
  40. COLOR _RGB32(r1% + (r2% - r1%) * fr##, g1% + (g2% - g1%) * fr##, b1% + (b2% - b1%) * fr##)
  41.  
  42. SUB getparagraph (wdt, hgt, x$)
  43. FOR i = 1 TO wdt / 8 * (hgt - 16) / 16
  44.     DO
  45.         x = INT(RND * 30) + 1
  46.         IF x > 26 THEN
  47.             x = -64: IF flag = 0 THEN flag = -1: EXIT DO
  48.         ELSE
  49.             flag = 0: EXIT DO
  50.         END IF
  51.     LOOP
  52.     a$ = CHR$(96 + x)
  53.     x$ = x$ + a$
  54.  

Pete
Want to learn how to write code on cave walls? https://www.tapatalk.com/groups/qbasic/qbasic-f1/

Offline bplus

  • Global Moderator
  • Forum Resident
  • Posts: 8053
  • b = b + ...
    • View Profile
Re: Anyone know how to make letters with a transparent background?
« Reply #18 on: May 24, 2019, 10:11:49 pm »
Make things more interesting, change width and height with p (plus) m (minus) keypress, PLUS some Braille:
Code: QB64: [Select]
  1. _TITLE "Try keypress m or p..."
  2. wdt = 800
  3. hgt = 600
  4. SCREEN _NEWIMAGE(wdt, hgt, 32)
  5. _SCREENMOVE 500, 100
  6. p = 4
  7.     k$ = INKEY$
  8.     IF k$ = "p" THEN
  9.         IF p < 64 THEN p = p * 2 ELSE p = 2
  10.         wdt = wdt + 5: hgt = hgt + 5
  11.     ELSEIF k$ = "m" THEN
  12.         IF p > 2 THEN p = p / 2 ELSE p = 64
  13.         wdt = wdt - 5: hgt = hgt - 5
  14.     END IF
  15.     SCREEN _NEWIMAGE(wdt, hgt, 32)
  16.     COLOR 15, 0
  17.     CLS
  18.  
  19.     FOR l = 0 TO hgt * .3333
  20.         midInk 255, 255, 255, 255, 255, 0, l / (hgt * .3333)
  21.         LINE (wdt - 1, l)-(0, l), , BF
  22.  
  23.         midInk 255, 255, 0, 255, 100, 0, l / (hgt * .3333)
  24.         LINE (wdt - 1, l + hgt * .3333 + 0)-(0, l + hgt * .3333 + 0), , BF
  25.  
  26.         midInk 255, 100, 0, 60, 25, 0, l / (hgt * .3333)
  27.         LINE (wdt - 1, l + (hgt * .3333 + 0) * 2)-(0, l + (hgt * .3333 + 0) * 2), , BF
  28.     NEXT
  29.     COLOR &HFFFFFF00
  30.     FOR y = 0 TO hgt STEP p
  31.         FOR x = 0 TO wdt STEP p
  32.             IF y MOD 2 * p = 0 THEN
  33.                 IF x MOD 2 * p = 0 THEN
  34.                     CIRCLE (x, y), 1
  35.                     PSET (x, y)
  36.                 END IF
  37.             ELSEIF y MOD 2 * p = p THEN
  38.                 IF x MOD 2 * p = p THEN
  39.                     CIRCLE (x, y), 1
  40.                     PSET (x, y)
  41.                 END IF
  42.             END IF
  43.         NEXT
  44.     NEXT
  45.  
  46.  
  47.  
  48.     CALL getparagraph(wdt, hgt, x$)
  49.     COLOR _RGB32(0, 0, 0)
  50.     ' Center with: _PRINTSTRING ((_WIDTH - LEN(s$) * 8) / 2, 232), s$
  51.     LOCATE 1, 1
  52.     REDIM q$(hgt \ 16)
  53.     m = 1: cnt = 0
  54.     DO
  55.         q$ = MID$(x$, m, wdt \ 8)
  56.         i = _INSTRREV(q$, " ")
  57.         IF i = 0 THEN m = m + wdt \ 8 ELSE m = m + i
  58.         q$ = MID$(q$, 1, i)
  59.         j = 0: xq$ = q$
  60.         DO
  61.             j = j + 1
  62.             z$ = MID$(x$, m, j)
  63.             IF z$ <> " " THEN EXIT DO
  64.             xq$ = xq$ + z$
  65.             m = m + 1
  66.         LOOP
  67.         cnt = cnt + 1
  68.         q$(cnt) = xq$
  69.         PRINT MID$(q$(cnt), 1, wdt \ 8);
  70.         IF cnt = hgt \ 16 - 1 THEN EXIT DO
  71.     LOOP
  72.     _DISPLAY
  73.     _LIMIT 60
  74.  
  75.  
  76. SUB midInk (r1%, g1%, b1%, r2%, g2%, b2%, fr##)
  77.     COLOR _RGB32(r1% + (r2% - r1%) * fr##, g1% + (g2% - g1%) * fr##, b1% + (b2% - b1%) * fr##)
  78.  
  79. SUB getparagraph (wdt, hgt, x$)
  80.     FOR i = 1 TO wdt / 8 * (hgt - 16) / 16
  81.         DO
  82.             x = INT(RND * 30) + 1
  83.             IF x > 26 THEN
  84.                 x = -64: IF flag = 0 THEN flag = -1: EXIT DO
  85.             ELSE
  86.                 flag = 0: EXIT DO
  87.             END IF
  88.         LOOP
  89.         a$ = CHR$(96 + x)
  90.         x$ = x$ + a$
  91.     NEXT
  92.  
  93.  

EDIT: fix Pete's midInk Math
« Last Edit: May 24, 2019, 10:37:21 pm by bplus »