Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB6: Picturebox VB6

tesmu [11.08.2009 20:21:10]

#

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ä?

Grez [11.08.2009 21:06:41]

#

Ensin lasket punaisten pikseleiden määrän niin laskutoimitus on seuraava

Punaisten %-osuus = (punaisten pikseleiden määrä) * 100 / (kuvan leveys) / (kuvan korkeus)

tesmu [11.08.2009 22:12:18]

#

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.

Grez [12.08.2009 00:21:21]

#

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.

Deffi [12.08.2009 01:22:29]

#

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.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta