Avatar billede fizz Nybegynder
12. december 2008 - 17:25 Der er 4 kommentarer og
1 løsning

tegn buffer, men hurtigt!

jeg har et array (320,240) som indeholder pixelfarver.

hvordan får jeg tegnet den i min picturebox hurtigt...

    For y = 0 To 239
        For x = 0 To 319
            Picture1.PSet (x, y), minfarve(x, y)
        Next x
    Next y

...er for langsom!
Avatar billede thomaxz Nybegynder
13. december 2008 - 11:39 #1
En løsning kunne være


For y = 0 To 239
        For x = 0 To 319 step 5
            Picture1.PSet (x, y), minfarve(x, y) '1
            Picture1.PSet (x+1, y), minfarve(x+1, y) '2
            Picture1.PSet (x+2, y), minfarve(x+2, y) '3
            Picture1.PSet (x+3, y), minfarve(x+3, y) '4
            Picture1.PSet (x+4, y), minfarve(x+4, y) '5
        Next x
    Next y

så sætter du 5 pixel på en gang, alternativ skal du over i noget multi threading.
Avatar billede fizz Nybegynder
15. december 2008 - 22:34 #2
dit svar giver nøjagtig samme tid som min løsning... :-(
Avatar billede thomaxz Nybegynder
16. december 2008 - 10:04 #3
I teorien burde det jo være 5 gange hurtige du kan evt. prøve at indsætte DoEvents

For y = 0 To 239
        For x = 0 To 319 step 5
            Picture1.PSet (x, y), minfarve(x, y) '1
            Picture1.PSet (x+1, y), minfarve(x+1, y) '2
            Picture1.PSet (x+2, y), minfarve(x+2, y) '3
            Picture1.PSet (x+3, y), minfarve(x+3, y) '4
            Picture1.PSet (x+4, y), minfarve(x+4, y) '5
            DoEvents
        Next x
        DoEvents
    Next y


og se om det gir noget,Du kan evt. også prøve at steppe med eller den anden løkke. hvis det ikke gir noget er du nok nød til at bruge multithreading.


http://www.freevbcode.com/ShowCode.Asp?ID=1287

http://msdn.microsoft.com/en-us/library/eed6swsx(VS.80).aspx

http://www.google.com/search?hl=en&client=firefox-a&channel=s&rls=org.mozilla:da:official&hs=3KB&sa=X&oi=spell&resnum=0&ct=result&cd=1&q=visual+basic+%2B+multithreading&spell=1
Avatar billede fizz Nybegynder
16. december 2008 - 21:13 #4
det er jo ikke selve loopet der tar tid.... det er .Pset() kommandoen der trækker... og ligemeget hvor mange threads du deler det op i vil det tage samme tid....

det jeg leder efter er en løsning á la BitBlt hvor man "blitzer" indholdet ind i min picture1
Avatar billede fizz Nybegynder
17. december 2008 - 17:01 #5
har selv fundet løsningen....

http://www.rookscape.com/vbgaming/tutAY.php
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester