Old Paper - Put an old paper texture on the screen - Dav - 11-25-2025
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
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
RE: Old Paper - Put an old paper texture on the screen - Delsus - 11-25-2025
Hello! Nice program!
I have always wondered how an image can be drawn using those characters. Can you please enlighten me?
RE: Old Paper - Put an old paper texture on the screen - SpriggsySpriggs - 11-25-2025
@Delsus, the image is being stored in a deflated string that he then inflates and loads into memory. It's just the raw binary of the image but compressed.
RE: Old Paper - Put an old paper texture on the screen - bplus - 11-25-2025
Dang I was hoping to see what Rho used for the Wiki, the realistic looking rough paper. That might be done with an image also? Don't think its drawing that paper.
RE: Old Paper - Put an old paper texture on the screen - Pete - 11-26-2025
No, no, no! That's a utility, not a program!!!
My artistic talent is strictly linear in nature, so I could never come up with stuff like this in a million years. +2
Pete
|