Funktio piirtää spriten läpinäkyvästi PictureBoxiin, ja piirtoon tarvitaan lisäksi 3 muuta PictureBoxia: spriteboxi, eli se mikä piirretään, maskiboxi, jossa on valkoisella läpinäkyväksi jäävät kohdat, ja mustalla kaikki kohdat mihin piirretään. Lisäksi tarvitaan myös puskuriboxi, joka toimii puskurina.
''' General Declartionssiin ' määritellään BitBlt-funktio Private Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long, ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long ' _hDC:iksi pitää antaa pictureboxin hDC Function TransparentBlt(X As Single, Y As Single, leveys As Single, korkeus As Single, KuvaMihinPiirretään_hDC As Long, SpriteJokaPiirretään_hDC As Long, KuvanMaski_hDC As Long, KuvaPuskuri_hDC As Long) jokumuuttuja = BitBlt(KuvaPuskuri_hDC, 0, 0, 32, 32, KuvaMihinPiirretään_hDC, X, Y, vbSrcCopy) jokumuuttuja = BitBlt(KuvaMihinPiirretään_hDC, X, Y, leveys, korkeus, KuvanMaski_hDC, 0, 0, vbSrcAnd) jokumuuttuja = BitBlt(KuvaMihinPiirretään_hDC, X, Y, leveys, korkeus, SpriteJokaPiirretään_hDC, 0, 0, vbSrcInvert) ' jostain kumman syystä pitää ajaa 2 kertaa jokumuuttuja = BitBlt(KuvaPuskuri_hDC, 0, 0, 32, 32, KuvaMihinPiirretään_hDC, X, Y, vbSrcCopy) jokumuuttuja = BitBlt(KuvaMihinPiirretään_hDC, X, Y, leveys, korkeus, KuvanMaski_hDC, 0, 0, vbSrcAnd) jokumuuttuja = BitBlt(KuvaMihinPiirretään_hDC, X, Y, leveys, korkeus, SpriteJokaPiirretään_hDC, 0, 0, vbSrcInvert) End Function
lainaus:
' jostain kumman syystä pitää ajaa 2 kertaa
Voisit selittää myös miksi pitää ajaa kaksi kertaa :D.
Uhh? Jos ei tiedä miten koodi toimii, niin miten toi voi olla sun tekemä edes? *peukku alas*
Aihe on jo aika vanha, joten et voi enää vastata siihen.