Seite 1 von 2
Maus auf Farbwert setzen
Verfasst: 26.03.2008 13:04
von Fox
Hi, hab mal wieder ein Problm.
Ich will meine Mauscursor auf einen Bestimmten Farbwert setzen, den ich hiermit ermittle:
Code: Alles auswählen
Procedure GetColorUnderMouse()
GetCursorPos_(@CursorPos.POINT )
ProcedureReturn GetPixel_(GetDC_(0),CursorPos\x,CursorPos\y)
EndProcedure
Debug Hex(GetColorUnderMouse())
Den Courser kann ich ja mit
auf einen Position setzen, aber wie mache ich das mit dem Farbwert?
Hoffe ihr wisst was ich meine und könnt mir helfen
MfG
Fox
Verfasst: 26.03.2008 13:17
von #NULL
willst du mit der maus zu einem punkt mit einer bestimmten farbe springen?
Verfasst: 26.03.2008 13:17
von NicTheQuick
Der Cursor ist ein Bild und nicht einfach nur eine Farbe. Du musst also ein
Bild zeichnen und es dem Cursor zuweisen. Dazu gibt es auch genügend
Beispiele in der PureArea oder hier im Forum.
Verfasst: 26.03.2008 13:22
von DarkDragon
Du meinst sowas?
Code: Alles auswählen
Procedure GetColorUnderMouse()
Protected CursorPos.POINT
Protected Result.l
Protected hDC.l
hDC = GetDC_(0)
GetCursorPos_(@CursorPos.POINT)
Result = GetPixel_(hDC, CursorPos\x, CursorPos\y)
ReleaseDC_(0, hDC)
ProcedureReturn Result
EndProcedure
Procedure SetColorUnderMouse(Color.l)
Protected CursorPos.POINT
Protected hDC.l
hDC = GetDC_(0)
GetCursorPos_(@CursorPos.POINT)
SetPixel_(hDC, CursorPos\x, CursorPos\y, Color)
ReleaseDC_(0, hDC)
EndProcedure
Debug Hex(GetColorUnderMouse())
t = ElapsedMilliseconds()
While ElapsedMilliseconds() - t < 2000
SetColorUnderMouse(RGB(255, 0, 0))
Wend
Btw.: Dein Code sollte nach GetDC_() immer schön brav ReleaseDC_() aufrufen, ansonsten wird es sehr speicherfressend wenn du es mehrfach aufrufst.

Verfasst: 28.03.2008 10:07
von Fox
hi... also ich meine das so, dass wenn jetzt auf meinem bildschirm der cursor irgendwo ist, und sobald eine icq nachricht eingeht, da blinkt ja dann in der taskleiste der kleine icon, der cursor auf das kleine icon gesetzt wird.
wie mach ich das denn?
Danke euch
Fox
Verfasst: 28.03.2008 10:20
von KeyKon
Um das nochmal Klar zu stellen:
Du willst sobald eine ICQ-Nachricht eintrifft den Coursor auf die Koordinaten der blinkende Meldung setzen, und das ganze an Hand des Farbwertes?
Verfasst: 28.03.2008 10:29
von Fox
ja... also das mit icq war nur als beispiel, aber ja sonst stimmt die beschreibung
Verfasst: 28.03.2008 10:30
von KeyKon
Aber dann müsstest du ja den ganzen Bildschirm nach dem Farbwert absuchen

Verfasst: 28.03.2008 10:36
von Fox
stimmt, aber wie mach ich das denn?
Verfasst: 28.03.2008 10:47
von KeyKon
Is doch Simpel, folgender Code ließt zB die Screen in ein Array ein, aber wie gesagt, schnell is das nich...
Code: Alles auswählen
Width = 1280
Height = 1024
Dim Screen.l(Width,Height)
hDC = GetDC_(0)
For x = 0 To Width
For y = 0 To Height
Screen(x,y) = GetPixel_(hDC, x, y)
Next
Next
ReleaseDC_(0, hDC)
(Das Prinzip GetPixel_(dc,x,y) geht eigentlich schon aus DarkDragons Post hervor)