Gå til innhold

Fa pixel farge fra ein PictureBox? (GetPixel)


Anbefalte innlegg

kossen kan eg fa RGB fargen fra et punkt i ein picture box? eg har provd GetPixel, men enten returnerer den -1(ERROR, outside cliping area) eller 0(svart) nagen ide?

 

Dim x As Long, y As Long, hhDC As Long
ReDim bData(47, 49) As Long
hhDC = GetWindowDC(Picture1.hwnd)
hhDC = CreateCompatibleDC(hhDC)

For x = 0 To 47
   For y = 0 To 49
       bData(x, y) = GetPixel(hhDC, x, y)
   Next y
Next x

Lenke til kommentar
Videoannonse
Annonse

Hovedproblemet her, er vel at du henter fargeinformasjonen fra en nyskapt innretningskonteks (ren gjetting - fornorskning av Device Context), som et direkte resultat av linje fire. For at GetPixel-funksjonen i det hele tatt skal fungere, må det foreligge en DC med en punktgrafikk å hente data ifra. Dersom bildeboksen er gjemt, vil GetPixel enten returnere et feilnummer eller en svart farge. For å fikse dette, kan du sette AutoRedraw til True.

 

Den hele koden kan dermed bli noenlunde således:

 

Dim x As Long, y As Long, hhDC As Long

ReDim bData(47, 49) As Long

 

' Forhindrer problem med dataekstrakting når vinduet er skjult

Picture1.AutoRedraw = True

 

' Henter peker til DC

hhDC = Picture1.hdc

 

For x = 0 To 47

  For y = 0 To 49

      bData(x, y) = GetPixel(hhDC, x, y)

  Next

Next

 

Det finnes for øvrig raskere metoder enn å benytte GetPixel (eller .Point).

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...