Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Old Paper - Put an old paper texture on the screen
#1
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

Find my programs here in Dav's QB64 Corner
Reply
#2
Hello! Nice program!

I have always wondered how an image can be drawn using those characters. Can you please enlighten me?
Reply
#3
@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.
The noticing will continue
Reply
#4
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.
  724  855  599  923  575  468  400  206  147  564  878  823  652  556 bxor cross forever
Reply
#5
No, no, no! That's a utility, not a program!!! Big Grin Big Grin Big Grin 

My artistic talent is strictly linear in nature, so I could never come up with stuff like this in a million years. +2

Pete
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  Yellow notebook paper background (scales to fit font setting) Dav 20 3,769 10-11-2023, 11:33 PM
Last Post: JRace

Forum Jump:


Users browsing this thread: