11-25-2025, 02:41 PM
Here's a little SUB I made a while back and never shared. Thought it may be useful. It paints an old paper texture at given screen coordinates and you can specify the color of the paper. It uses a very small grey paper image which is layered with a given color using the LINE statement. The texture looks okay when filling both small and large screen areas. I've found it handy for several kinds of programs.
This method is kind of outdated now that QB64PE can embed image files, and also has BASE64 built-in. But for those who still like to stick things in code, here you go.
- Dav
This method is kind of outdated now that QB64PE can embed image files, and also has BASE64 built-in. But for those who still like to stick things in code, here you go.
- Dav
Code: (Select All)
'============
'OldPaper.bas
'============
'Coded by Dav for QB64PE.
'Small SUB loads nice old paper texture on screen.
'You can specify the size and color of the old paper.
'Use it for background, textured buttons, etc...
Screen _NewImage(_DesktopHeight, Int(_DesktopHeight * .75), 32)
Do
x1 = Rnd * _Width + 1: x2 = x1 + Rnd * _Width + 1
y1 = Rnd * _Height + 1: y2 = y1 + Rnd * _Height + 1
OldPaper x1, y1, x2, y2, Rnd * 155, Rnd * 155, Rnd * 155
_Limit 10
_Display
Loop
Sub OldPaper (x1, y1, x2, y2, r, g, b)
A$ = "" 'Loads old paper at given screen coordinates and r,g,b color.
A$ = A$ + "2BgDTi)>A-YROXo*0F)G}<S=/|gF8-QlUIW8h<eoH?Z(C{Uh2<N7=9P*l4xZD1Iz+wa[9+d[WUS5"
A$ = A$ + "S4YVM/n-Y}H.vE3J*uJ<.3{g6Fw;ON=Ia>upAodpP<*E'xO4pveHLNG7Mr1pa'jDl;hEn6'A:1d1"
A$ = A$ + "D^Z1Gi5'o_4hd*kE<yIKI48yoF{AQ(G<B)ca6Zec}55M:=Wf{-IC*F=)L>iOmv+V]*fkp3YJHp]A"
A$ = A$ + "YAxCtmB6Q7.[.R3SHa'|B=D=RCMC*sepm6uqIwSI\g7G?NzVS:YvH1Mzjk;}rz/<A4hpsXFOp(Aj"
A$ = A$ + "MA>.S+R/r{>MQ|a\qPAuS1EHNHa=jBy0uHRZ}/g<n_8VqG?7,/{iTH]PIBO,l;7DUqex^>Z0Cm}|"
A$ = A$ + "qw/N,J3v?e{Q*=b^C,:zjvqm3yE7.[2w8I45gz)d49oj.lOG0<>c*FV\i'+N>LInURt7pjxFZ=c_"
A$ = A$ + "fFlZpxEo(=nfLW9?Yt[-kT_<opnp4Gy7QaN?F;)0zlPal;5<(AD?W*|)mf/e[*q'BdR]/|zaok8p"
A$ = A$ + "|H.8j93(I4KSBx(Zle;00j]6J0IeM:u69cyC_7S78za+'4UVxY5VPz5SDVgCamR_fg)T.LRJ6iWd"
A$ = A$ + "O}{yL2P'9*dH<bHCk^9,T*Ucxk9g^oi|o2_dv?4Ho4zfOtwHvF[zoS8??Rrsz.x8fN-AgC4e5?k]"
A$ = A$ + "9+>=FJPmJn4qD+=BLNf0<YD)*D0,}an{Y\?z^t5+')-jH:Q^d6Ab(2|wX:u*mZoK=YKN]0jh/Zqr"
A$ = A$ + ")*5N1yspVC^\1P5(4{7c^q+(OFQU'*rGyAp9f+w8]RU.MVoHr:g]3*Z53H5TJwJ39V5M/u_A|V-o"
A$ = A$ + "<5tr=8H\HGA78|Xi(0[1]XV[7VOg'NJzUqRrvsbag;_-0SC+{3'{,A?z4Ju3pm-U/da\7Sxns(KX"
A$ = A$ + "<6_;T+Hqoa0W::mL({l\Q[Noh)4u]>*D-Q-icS|fW'd)V[}+P?U?mM\wUw(fXz,^Nc[UC5C/{[sc"
A$ = A$ + "<Z*x^THt3JLVDEj\z*]2Q2Hff>,}ao4MFeZ}d)oHc'bBZ>nmS>AzW=p:(O77v>q/\/Zjc^6vly'Y"
A$ = A$ + "IZ,OQ9v*2CFUO4J/<'kG<,yVI\TvGS-9*)NR_Vnww^.}4h-xR4y}>g1[{--qMUBt0NTD9bD0;=BY"
A$ = A$ + "7\=]Nu2Fl(E*nWB-/A<L\OJ<as(LEmGsjKDLTXT|gZOp;w<AVa(iKl6=Jo4[]R,*+TlxnRkmFJg1"
A$ = A$ + "LRWp.E=5m4x{}nNa.'_IgMBr'\;JCMbVyN^qs4r>;4CsVTyTdrK+j3G\NA|QYQ0-?\D1oY8{+^ur"
A$ = A$ + "<ED(aG<(<UBUt6H:vuJz\G4o**')u>-.k?BU:Ud8FKIx]6hBbXXwkxiC'?Sar3Mb92q5*4a0j.3*"
A$ = A$ + "mH426R>:h9c.RL-P5jV,:[TIt/kRS<S1zS9D:4uxuS8^6i-0]NFp6.[Ba]6*.0a5X?1mppfdQb/b"
A$ = A$ + "sDKGGf2nN>^+3u1tRewzB>.C_=pwZnU.1;z3zq-<CDP1^D3L9+OY]tZ0'a[F5=Rli\ZX|(tDT5NI"
A$ = A$ + "9v?IO8G3(/s:LR9PUmaaD'awQ(SQ\cDDX8>nQ^r,Ls].hch>5P<m;L6<xgr_GMCo00l;m'C-Svju"
A$ = A$ + "W=v?*x.go0mpC'\4?+bHXMZl9_waQFFDQ5,Nf/]tW2NVV,DEezvM6G-Y}emb+fd-H+DU^>H[Y-5t"
A$ = A$ + ")G-o1LQQikUQecG_;IAQiKekW50cSfW0<c=S>1ao5*)jl<1aj5e6_Zxzs5c8*pEq5+Bw?7ZFrVS+"
A$ = A$ + "]/msxF88=gnq=+/Ws/2Yi)oC,o1Z4hZ,:f7SF4,77{p85i,3UvZR:LpKj6Ga<Lz4EQ)H+>EB'cm7"
A$ = A$ + "^VJ2O=9R[<]SjJQO7d*cH|DlCGLB].QKEje\+Vxg/,9O}qQ)k9kTy66>tk'V<)(j6gL+*?u?e1yw"
A$ = A$ + "s7/PC_b_:<q?,G*oTUpnri0Er:/shCbLc>g:<qE5Kt)sGCF5vs{h+:v_Lz=3[vC5|GT0SHiCB-e?"
A$ = A$ + "87RV]u-}2y*v++PB5UxnS__+=M?m^UPHO?H5\RTkUdVy|HGqz}WX.LxM371H1Jt)dt?Lf)KUP4W;"
A$ = A$ + "s)2pKtwOQ\;)nNKFnjOjs;PWI6k}dE)lHGy,5fC::IZlZ+P<06NK)Xv}6V:664JR5KQ[10Y,v64-"
A$ = A$ + "]BU/CAI.WEX<>0-n*_W}6u2:iYC.JooR?I;]n6)Ez}mpW?-|BCuxd.FVM[eGD0pG-2;\<OA<.g6?"
A$ = A$ + "G|-^s?XD3IWZlTut)gQfOJKy1[sKQCv-6=qGNl<0if(1GeRP,jg^l-L:0XpcsoKpj{4Pz=Q;t_'O"
A$ = A$ + "oAL(6ecm7Xp+O)C\o1HCTJL5*>[J\^:-j(P+r2?6b_XG9b+NdWEpmiXL;}T:.8d+smJj]HA<w+'x"
A$ = A$ + "e<jH=LmC^GEX>3.j>00zX4a-T)f>Eu0mar2z]d1mi-1P><PV2=>H}SzH|p;Xio{=s\4BbK56AcDj"
A$ = A$ + "SFQ^NoN3?FUSyN>V+M/-Hpz;POK}r[)S52x1Hcbl}wW\?bSuNqH)stce|ct??3x)6lV:PxIi(oyg"
A$ = A$ + ";y|:5-<8yas+:kO*sZt9\7GNRQJ^<DnliFp0F*f6O5pk/q6{?5qaCX\YitScMdeDSK/Td/3hOC(k"
A$ = A$ + "3POJ,N=mJSM(ppl/QD61AKC;3lJ_:8>bk'ELbdlr*18os(qg2ef6UAN;vZfB[n24{R?KlF7|YUE]"
A$ = A$ + "*bsctXYS+UG<m3Ol2XDgPN81GTmN4uV2Dmfl_7kM9m<m+yG[JCdk77a:W7[Vm<^aPV'-EF_5ze?y"
A$ = A$ + "PCF|>Dz7q0IVPU+6w)MmWk6:qPCH4lv=4x|FV3\:-YO-mxkmLSHUENFFF+<i2MA.[8)fFxr.4uVo"
A$ = A$ + "5l6m?m]3.ul9)CvFxLBcTLaVT?Q.V:x}6p8UGeMDt4F75]'b41Zs2"
For i = 39 To 125
If i <> 64 And i <> 96 Then c$ = c$ + Chr$(i)
Next: Dim v As _Unsigned Long
a = Val(Mid$(A$, 1, 1))
For i& = 2 To Len(A$) Step 5: v = 0
For j& = 0 To 4: p& = 85 ^ (4 - j&)
c& = InStr(c$, Mid$(A$, i& + j&, 1)) - 1
v = v + c& * p&: Next: o$ = o$ + MKL$(v)
Next: btemp$ = Mid$(o$, 1, Len(o$) - a + 1)
BASFILE$ = _Inflate$(btemp$, 2328) 'uncompress image data
tempwall& = _LoadImage(BASFILE$, 32, "memory") 'load image data from string memory
_PutImage (x1, y1)-(x2, y2), tempwall& 'put image on screen at given cords
Line (x1, y1)-(x2, y2), _RGBA(r, g, b, 55), BF 'layer given color over it
_FreeImage tempwall&: A$ = "": BASFILE$ = "" 'clean up on aisle 4
End Sub
