Windowsspezifisches Forum , API ,..
			
		
		
			
				
																			
								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:45Wohnort:  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
EndProcedureDas 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:45Wohnort:  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,
			
			
									
									Der Narr denkt er sei ein weiser Mann.
						 
		 
				
		
		 
	 
	
						
		
		
			
				
								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,
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:37Computerausstattung:  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:35Computerausstattung:  MacBook Core2Duo mit MacOS 10.6.8Wohnort:  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)