Seite 1 von 1
Farbe unterm Mauscursor
Verfasst: 08.04.2005 20:23
von Kekskiller
Suche eine Funktion, die mir die/den Farbwert/Farbwerte zurückgibt, der im Moment unter der Maus ist. Am besten so in der Art:
Danke schonmal im Voraus.
Verfasst: 08.04.2005 20:48
von MVXA
Code: Alles auswählen
Procedure GetColorUnderMouse()
DefType.l imgPoint, lngDC, lngMemDC, lngColor
DefType.POINT CursorPos
GetCursorPos_(@CursorPos)
lngDC = GetDC_(0)
imgPoint = CreateImage(#PB_Any, 5, 5)
lngMemDC = CreateCompatibleDC_(lngDC)
SelectObject_(lngMemDC, ImageID())
BitBlt_(lngMemDC, 0, 0, 5, 5, lngDC, CursorPos\x, CursorPos\y, #SRCCOPY)
DeleteDC_ (lngMemDC)
ReleaseDC_(0, lngDC)
If StartDrawing(ImageOutput())
lngColor = Point(1, 1)
StopDrawing()
EndIf
ProcedureReturn lngColor
EndProcedure
Das hier sollte fürs erste reichen

. Was bekomme ich jetzt

?
Verfasst: 08.04.2005 20:59
von Rings
sorry, konnte ich nich wiederstehen:
Windows-Api version:
Code: Alles auswählen
Procedure GetColorUnderMouse()
GetCursorPos_(@CursorPos.POINT )
ProcedureReturn GetPixel_(GetDC_(0),CursorPos\x,CursorPos\y)
EndProcedure
Debug Hex(GetColorUnderMouse())
Verfasst: 08.04.2005 21:10
von MVXA
ach menno -_-. Gut in der MSDN rum gesurft -_-...
Verfasst: 08.04.2005 21:24
von Kekskiller
*freu* Kekse für alle

!
Verfasst: 09.04.2005 10:13
von Kaeru Gaman
seit ihr denn sicher, daß wirklich die Farbe unter dem Maus-Zeiger ermittelt wird,
und nicht die Farbe des Maus-Zeigers selbst?
Verfasst: 09.04.2005 10:50
von Rings
Kaeru Gaman hat geschrieben:seit ihr denn sicher, daß wirklich die Farbe unter dem Maus-Zeiger ermittelt wird,
und nicht die Farbe des Maus-Zeigers selbst?
ja, bewege einfach die mouse und drück F5 in PB .
Verfasst: 09.04.2005 12:10
von DarkDragon
Naja, aber man sollte doch ein DC auch immer wieder releasen, oder etwa nicht?
Code: Alles auswählen
Procedure GetColorUnderMouse()
GetCursorPos_(@CursorPos.POINT )
hDC = GetDC_(0)
If hDC <> 0
Color = GetPixel_(hDC,CursorPos\x,CursorPos\y)
ReleaseDC_(0, hDC)
ProcedureReturn Color
EndIf
EndProcedure
Debug Hex(GetColorUnderMouse())
[EDIT] Und testen ob das hDC gültig ist wäre auch empfehlenswert

.
Verfasst: 09.04.2005 17:14
von Andre
Wenn wir schon beim Code vergrößern sind, dann gleich noch die Rückgabewerte in jedem brauchbaren Format:
Code: Alles auswählen
Procedure GetColorUnderMouse()
GetCursorPos_(@CursorPos.POINT )
hDC = GetDC_(0)
If hDC <> 0
Color = GetPixel_(hDC,CursorPos\x,CursorPos\y)
ReleaseDC_(0, hDC)
ProcedureReturn Color
EndIf
EndProcedure
color.l = GetColorUnderMouse()
Debug "Color:"
Debug color
Debug "Color in Hex format:"
Debug Hex(color)
Debug "Color in RGB values:"
Debug Red(color)
Debug Green(color)
Debug Blue(color)