Windowsspezifisches Forum , API ,..
Beiträge, die plattformübergreifend sind, gehören ins 'Allgemein'-Forum.
Kekskiller
Beiträge: 752 Registriert: 14.09.2004 21:39
Kontaktdaten:
Beitrag
von Kekskiller » 08.04.2005 20:23
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.
MVXA
Beiträge: 3823 Registriert: 11.09.2004 00:45
Wohnort: Bremen, Deutschland
Kontaktdaten:
Beitrag
von MVXA » 08.04.2005 20:48
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
?
Rings
Beiträge: 977 Registriert: 29.08.2004 08:48
Beitrag
von Rings » 08.04.2005 20:59
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())
Rings hat geschrieben: ziert sich nich beim zitieren
MVXA
Beiträge: 3823 Registriert: 11.09.2004 00:45
Wohnort: Bremen, Deutschland
Kontaktdaten:
Beitrag
von MVXA » 08.04.2005 21:10
ach menno -_-. Gut in der MSDN rum gesurft -_-...
Kaeru Gaman
Beiträge: 17389 Registriert: 10.11.2004 03:22
Beitrag
von Kaeru Gaman » 09.04.2005 10:13
seit ihr denn sicher, daß wirklich die Farbe unter dem Maus-Zeiger ermittelt wird,
und nicht die Farbe des Maus-Zeigers selbst?
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Rings
Beiträge: 977 Registriert: 29.08.2004 08:48
Beitrag
von Rings » 09.04.2005 10:50
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 .
Rings hat geschrieben: ziert sich nich beim zitieren
DarkDragon
Beiträge: 6291 Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:
Beitrag
von DarkDragon » 09.04.2005 12:10
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
.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Andre
PureBasic Team
Beiträge: 1765 Registriert: 11.09.2004 16:35
Computerausstattung: MacBook Core2Duo mit MacOS 10.6.8 Lenovo Y50 i7 mit Windows 10
Wohnort: Saxony / Deutscheinsiedel
Kontaktdaten:
Beitrag
von Andre » 09.04.2005 17:14
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)