Någon som har förslag på hur man skulle kunna hämta ut en valfri pixel från skärmen och få den återskapad i sitt program med rätt färgkod... <code> Det var ju inte mycket att gå på. Men tack för visat intesse. Varför så tråkig ton när du fått lösningen på ditt problem? Det enda du behöver göra är att välja vilken pixel du vill ha info om! För att få hdc för hela skärmen anger du mycket möjligt bara NULL till funktionen eller så använder du GetDC() med NULL som parameter för att få detta. Jag kan ju börja med att djupt beklaga om jag ohövlig. Vilket inte alls var meningen. <b>Men är tacksam för den lilla information jag kan få som hjälp på vägen... </b> Det är Ok Morgan förstod att informationen var bristfällig. Nu kör jag fast. Det är enklare än du tror. Testa med 0. AHA perfekt Modifierade Andreas exempel lite kan hämtas Hej igen <b>Jag försöker skapa ett litet program där man plockar in en valfri bild från det som finns på skärmen. Som är t.ex. 20 x 40 pixlar stor. Och sedan plocka ut färgerna som den består av i klartext. </b> Hej Sven... Programmet jag tänker på scannar bilden pixel för pixel och lägger upp varje color i en array.Hämta ut en valfri pixel från skärmen...
Detta kanske är otroligt klurigt. Men är tacksam för den lilla information jag kan få som hjälp på vägen...
// MorganSv: Hämta ut en valfri pixel från skärmen...
Private Declare Function GetPixel Lib "gdi32" _
(ByVal hdc As Long, ByVal x As Long, _
ByVal y As Long) As Long
</code>
If the function succeeds, the return value is an RGB value.Sv:Hämta ut en valfri pixel från skärmen...
Nästa förslag tack...Sv: Hämta ut en valfri pixel från skärmen...
Kolla in: [GetPixel]
Eller http://www.allapi.net/apilist/GetPixel.shtmlSv:Hämta ut en valfri pixel från skärmen...
http://msdn2.microsoft.com/en-us/library/ms533241.aspxSv:Hämta ut en valfri pixel från skärmen...
Tack Björn och ni andra för hjälpen nu vet jag hur jag skall gå tillväga…Sv: Hämta ut en valfri pixel från skärmen...
...
<b>Det var ju inte mycket att gå på.</b>
Man kan väl säga att du fick väl vad du frågade efter.
Om du inte förstår dig på API skall du be om ett förtydligande istället för att avfärda den information du fått.
Jag är intresserad varför du skall hämta en pixel?
Om du vill ta en skärm dump av hela/del av skärmen finns det andra effektivare sätt.
Vill du ha en windows/system färg finns det andra bättre alternativ.
Så om du istället beskriver vad du vill åstadkomma inte hur du löser det.Sv:Hämta ut en valfri pixel från skärmen...
Ville bara sätta dig på spår.Sv: Hämta ut en valfri pixel från skärmen...
Hur tusan får jag reda på Screen hDC
<code>
Option Explicit
Private Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function GetPixel Lib "gdi32" (ByVal hdc As Long, ByVal X As Long, ByVal Y As Long)
Private Sub Command1_Click()
Dim scrDc As Long
scrDc = GetDC(Null)
MsgBox scrDc
End Sub
'Detta funkar inte ,hur skriver jag Null
</code>Sv:Hämta ut en valfri pixel från skärmen...
Här är ett exempel som med en timer läser av färgen där man håller musen:
Private Type POINTAPI
x As Long
y As Long
End Type
Private Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function GetPixel Lib "gdi32" (ByVal hDC As Long, ByVal x As Long, ByVal y As Long) As Long
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Private Sub Timer1_Timer()
Dim hDC As Long
Dim Color As Long
Dim lpPoint As POINTAPI
GetCursorPos lpPoint
hDC = GetDC(0&)
Color = GetPixel(hDC, lpPoint.x, lpPoint.y)
If Color = -1 Then
Else
BackColor = Color
End If
End Sub
Sv: Hämta ut en valfri pixel från skärmen...
Testade 0 (noll) men fick fel, glömde 0#Sv:Hämta ut en valfri pixel från skärmen...
Programarkivet:API GetPixelSv: Hämta ut en valfri pixel från skärmen...
<code>
' Jag är intresserad varför du skall hämta en pixel?
</code>
Jag försöker skapa ett litet program där man plockar in en valfri bild från det som finns på skärmen. Som är t.ex. 20 x 40 pixlar stor. Och sedan plocka ut färgerna som den består av i klartext.
Vet inte riktigt hur jag skall gå tillväga men jag har ju fått lite information tack vare detta forum.
Tack för visat intresse // MorganSv: Hämta ut en valfri pixel från skärmen...
Private Type POINTAPI
x As Long
y As Long
End Type
Private Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function GetPixel Lib "gdi32" (ByVal hDC As Long, ByVal x As Long, ByVal y As Long) As Long
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Private Sub Timer1_Timer()
Dim hDC As Long
Dim Color As Long
Dim lpPoint As POINTAPI
GetCursorPos lpPoint
hDC = GetDC(0&)
Color = GetPixel(hDC, lpPoint.x, lpPoint.y)
If Color = -1 Then
Else
frmColor.BackColor = Color
lblColor.Caption = GetPixel(hDC, lpPoint.x, lpPoint.y) '<- här rablar den bara
'en massa 8 siffriga
'kombinationer...
End If
End Sub
Satt och klurade lite med koden… När jag lägger till följande:
lblColor.Caption = GetPixel(hDC, lpPoint.x, lpPoint.y)
Så skrivs det ut ett tal med åtta siffror som ändras beroende på vart jag sätter markören. Varje färg har sin kombination och detta är ju precis vad jag letar efter.
Det jag nu är lite nyfiken på är hur jag ersätter:
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Så jag själv I koden kan ange vilken pixel på skärmen som skall mätas. Men jag får klura lite så återkommer jag om det kör ihop sig…
Tack för informationen // Morgan
Sv: Hämta ut en valfri pixel från skärmen...
Kan du tänka dig att plocka ut bilden med Capture från tex PaintShop.
Och sedan importera denna Capture till en PictureBox i Vb ?
I så fall har jag en lösning jag användt.Sv:Hämta ut en valfri pixel från skärmen...
Detta låter mycket intressant... Låt höra...Sv: Hämta ut en valfri pixel från skärmen...
Sen kommer frågan hur varje pixelfärg skall presenteras . ListBox eller hur har du tänkt ?
Skall det vara Vb format eller rå RGB i Hex format. Ex. #EED077. eller Vb format &H77D0EE&