Eli mulla on pictureboksi johon pystyy hiirellä piirtämään. Minkähänlaisella laskutoimituksella voisin saada tietoon, että kuinka monta prosenttia kyseisestä kuvasta on esim punaista väriä?
Ensin lasket punaisten pikseleiden määrän niin laskutoimitus on seuraava
Punaisten %-osuus = (punaisten pikseleiden määrä) * 100 / (kuvan leveys) / (kuvan korkeus)
Millätapaa pystyisin nopeasti laskemaan punaisten pikseleiden määrän. Normaalilla for x = 0 to leveys
for y = 0 to korkeus
next y
next x
-silmukalla siinä kestäisi ikuisuus.
Prosenttilaskut taipuu joo, mutta olisi voinut ehkä tarkentaa että haen nopeaa tapaa.
Ei tuossa loopissa sinänsä ole nopeuden kannalta juurikaan vikaa. Minulla meni 0,1 sekuntia, ja laitoin kuitenkin kohtuukokoiset arvot:
Dim aika As Double aika = Timer Dim Leveys As Long, Korkeus As Long Dim X As Long, Y As Long Leveys = 4096 Korkeus = 3072 For X = 0 To Leveys For Y = 0 To Korkeus Next Y Next X MsgBox "Kesti " & (Timer - aika) & "s"
En tosin keksi miten tuo nyt niitä punaisia pisteitä laskee.
Sinun kannattaa varmaan aloittaa selvittämällä missä sitä aikaa kuluu ja korvata kyseinen operaatio nopeammalla.
Ei pitäs tosiaan kauaa aikaa mennä, tosin VB:stä kun ei koskaan tiedä. Windowsin GetPixel-API on ainakin kuolettavan hidas, että vaiha se GetDIBitsiin tai vastaavaan jos sitä käytät. Yksi ratkaisu olis laskea punaisten pikselien määrä samalla kun niitä piirretään, jos se onnistuu jotenkin kätevästi.
Aihe on jo aika vanha, joten et voi enää vastata siihen.