Richard87 Skrevet 16. juni 2005 Del Skrevet 16. juni 2005 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
aadnk Skrevet 16. juni 2005 Del Skrevet 16. juni 2005 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
GeirGrusom Skrevet 17. juni 2005 Del Skrevet 17. juni 2005 GetPixel er latterlig treig, jeg skjønner ikke hvordan det går an å lage den så treig engang. Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå