Någon som vet ett bra sätt att scrolla en bakgrund i t.ex ett spel Du kan lägga bakgrunden i t.ex. en Picturebox och sedan blitta den dit du vill ha den. Det är en remsa som jag vill loopa i bakgrunden till spelet. Remsan är ritad så att man inte ser skarven vid loopning Litet exempel: hmm..har redan testat en sån varian men den funkar inte när man kör den baklänges. Vi har redan fått fram en simpel kod som funkar mkt bra nu... Fördelar: paintpicture jobbar varken mot bitblt eller strechblt ALLA av vb6 ritfunktioner är helt mjukvarubaserade , och använder inga bakomliggande apier , och är därför VÄLDIGT långsamma (gämfört med apierna då) Vad har du fått den informationen från? det blir väldigt uppenbart att det är så om man får fel i gdi32.dll Jag har testat paitpicture vs bitblt å kommit fram till att bitblt är ca 16 gånger snabbare...skillanden blir än större om man har tyngre grafikScrollning
Man ska även kunna loopa bakgrunden när man scrollarSv: Scrollning
/ PeterSv: Scrollning
Sv: Scrollning
<code>
'Wrapar ofsett
If mOffsetX < 0 Then
mOffsetX = mPictureWidth + mOffsetX
ElseIf mOffsetX >= mPictureWidth Then
mOffsetX = mOffsetX - mPictureWidth
End If
'Ritar bild
PaintPicture Image1.Picture, 0, 0, ScaleWidth, ScaleHeight, mOffsetX, 0, ScaleWidth, ScaleHeight
'Ritar när den överlappar
If mOffsetX > mPictureWidth - ScaleWidth Then
PaintPicture Image1.Picture, 0, 0, ScaleWidth, ScaleHeight, mOffsetX - mPictureWidth, 0, ScaleWidth, ScaleHeight
End If
</code>Sv: Scrollning
Och föresten, varför använder du paintpicture istället för BitBlt i dina koderSv: Scrollning
PaintPicture jobbar både mot BitBlt och StrechBlt. Använder scalemode för Container'n. Parametrar är valfria.
Nackdelar:
Långsammare!
Om det inte behövs superprestanda duger den allt.Sv: Scrollning
//RogerSv: Scrollning
Som jag har förståt det så är lite kontroller av parametrar och omvandling som måste göras i PAint Picture. Dessutom måste den ju skapa en Device Contexts. Eftersom BitBlt inte direkt kan arbeta mot BitBlt. Om detta bara är en minnesresistent Device Contexts som har t.ex. annat färdjup. Kommer detta påvärka prestandan avsevärt.
Men jag har inte läst någon stans om hur PaintPicture fungerar eller är skriven. Så jag skulle gärna vilja veta vart du har fått reda på det. Kanske kan lära mig något nytt.
Det finns en del information och jämförelse om PAintPicture, BitBlt och StrechBlt på:
http://www.mvps.org/vb/hardcore/index.html
Kapitel 7: Painting Pictures
http://www.mvps.org/vb/hardcore/html/paintingpictures.htmSv: Scrollning
en bekant fick fel i sin gdi32.dll (hur han nu lyckades med det) så alla apps som använde gdi anropen ritade som skit medans allt som ritades via vb kod ritades helt vanligt...
det är dessutom ganska lätt att testa det själv , anropar man bitblt (eller tom strechblt) så är dessa snabbare än paintpicture , och om paintpicture skulle wrappa mot api'ern så skulle det inte vare värst mycket skillnad , förutom den overhead som blir för det wrappade anropet , men det är ju försumbart...
ps.
att skapa en device context tar inte värst lång tid , det är skapanded av en bitmap som kan selectas in i dc'n som tar tid , och den är ju redan skapad i en stdPicture.
//RogerSv: Scrollning