Pixelsearch variaciones

y programas personales para otros como tu, puede que te corrijan ;)
Responder
Avatar de Usuario
ms999
Hacker del Foro
Mensajes: 116
Registrado: 26 Ene 2011, 06:13

Pixelsearch variaciones

Mensaje por ms999 »

Hola, primero que todo disculpas si esto no va en esta sección.
Hice un script para poder ver que colores estan incluidos cuando uno usa la función pixelsearch y quiere buscar variaciones de ese color buscado... El programa funciona pero estoy dudando de que lo que me muestra es correcto, osea si esos colores que veo son los que realmente el pixelsearch busca.... mirenlo y diganme...

De ultima si este script esta bien es una linda utilidad para ver colores :p
Desde ya gracias y a ver si empiezo a postear cosas como estas... que tengo varias utilidades de este tipo que fui haciendo para chekear cosas antes de agregarlas a mis proyectos...

Código: Seleccionar todo

#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <color.au3>
#region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 342, 159, 192, 124)
$Input1 = GUICtrlCreateInput("", 176, 8, 153, 32, $ES_CENTER)
GUICtrlSetLimit(-1, 6)
GUICtrlSetFont(-1, 15, 400, 0, "MS Sans Serif")
$Input2 = GUICtrlCreateInput("", 176, 56, 33, 32, BitOR($ES_CENTER, $ES_NUMBER))
GUICtrlSetFont(-1, 15, 400, 0, "MS Sans Serif")
$Label1 = GUICtrlCreateLabel("Color en Hex", 16, 16, 116, 28)
GUICtrlSetFont(-1, 15, 400, 0, "MS Sans Serif")
$Label2 = GUICtrlCreateLabel("Variaciones", 16, 56, 103, 28)
GUICtrlSetFont(-1, 15, 400, 0, "MS Sans Serif")
$Label3 = GUICtrlCreateLabel("0X", 144, 16, 28, 28)
GUICtrlSetFont(-1, 15, 400, 0, "MS Sans Serif")
$Graphic1 = GUICtrlCreateGraphic(16, 88, 65, 57)
$Button1 = GUICtrlCreateButton("Mostrar", 224, 56, 105, 33, $WS_GROUP)
GUICtrlSetFont(-1, 15, 400, 0, "MS Sans Serif")
GUISetState(@SW_SHOW)
#endregion ### END Koda GUI section ###
Dim $mostrarcolor[250]
For $a = 0 To 249
	$mostrarcolor[$a] = GUICtrlCreateLabel("", 86 + $a, 110, 1, 20)
Next
While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $Button1
			_mostrar()
	EndSwitch
WEnd
Func _mostrar()
	; Color al $Graphic1
	Local $color, $colorvar, $a = 0
	$color = "0x" & GUICtrlRead($Input1)
	GUICtrlSetBkColor($Graphic1, $color)
	; Variaciones del color a las labels $mostrarcolor[]
	$colorvar = GUICtrlRead($Input2)
	$rgbcolor = _ColorGetRGB($color)
	$step = ($colorvar / 5) ; es dividido 5 porque 5 x 5 x 5 da 125 porque la cantidad de colores que voy a mostrar de la variacion van a ser 250 que es el doble
	For $r = 1 To 5
		If Hex($rgbcolor[0]) > 0x00 Then
			$rgbcolor[0] = $rgbcolor[0] - Hex($step)
		EndIf
		For $g = 1 To 5
			If Hex($rgbcolor[1]) > 0x00 Then
				$rgbcolor[1] = $rgbcolor[1] - Hex($step)
			EndIf
			For $b = 1 To 5
				If Hex($rgbcolor[2]) > 0x00 Then
					$rgbcolor[2] = $rgbcolor[2] - Hex($step)
				EndIf
				GUICtrlSetBkColor($mostrarcolor[$a], _ColorSetRGB($rgbcolor))
				$a += 1
			Next
			$rgbcolor[2] = _ColorGetBlue($color)
		Next
		$rgbcolor[1] = _ColorGetGreen($color)
	Next
	MsgBox(0, "", $a)
	$rgbcolor = _ColorGetRGB($color)
	For $r = 1 To 5
		If Hex($rgbcolor[0]) < 0xFF Then
			$rgbcolor[0] = $rgbcolor[0] + Hex($step)
		EndIf
		For $g = 1 To 5
			If Hex($rgbcolor[1]) < 0xFF Then
				$rgbcolor[1] = $rgbcolor[1] + Hex($step)
			EndIf
			For $b = 1 To 5
;~ 				msgbox(0,"",hex($rgbcolor[2]))
				If Hex($rgbcolor[2]) < 0xFF Then
					$rgbcolor[2] = $rgbcolor[2] + Hex($step)
				EndIf
				GUICtrlSetBkColor($mostrarcolor[$a], _ColorSetRGB($rgbcolor))
				$a += 1
			Next
			$rgbcolor[2] = _ColorGetBlue($color)
		Next
		$rgbcolor[1] = _ColorGetGreen($color)
	Next
EndFunc   ;==>_mostrar
EDIT: Funciona algo raro cuando se pone un color que alguno de sus componentes supera FF o esta por debajo de 00, si alguien me ayuda a corregir eso lo agradecería. ;)
EDIT2: Me setaba olvidando de detallar el problema, cuando uso un numero grande de variacion de color, la muestra se ve poco variada :S cuando creo que debería salir mas colorida ya que usa más colores... :S
EDIT3: Me parece que ahi va, denme sus opiniones...

Código: Seleccionar todo

#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <color.au3>
#region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 415, 160,-1, -1)
$Input1 = GUICtrlCreateInput("", 176, 8, 153, 32, $ES_CENTER)
GUICtrlSetLimit(-1, 6)
GUICtrlSetFont(-1, 15, 400, 0, "MS Sans Serif")
$Input2 = GUICtrlCreateInput("", 176, 56, 33, 32, BitOR($ES_CENTER, $ES_NUMBER))
GUICtrlSetFont(-1, 15, 400, 0, "MS Sans Serif")
$Label1 = GUICtrlCreateLabel("Color en Hex", 16, 16, 116, 28)
GUICtrlSetFont(-1, 15, 400, 0, "MS Sans Serif")
$Label2 = GUICtrlCreateLabel("Variaciones", 16, 56, 103, 28)
GUICtrlSetFont(-1, 15, 400, 0, "MS Sans Serif")
$Label3 = GUICtrlCreateLabel("0X", 144, 16, 28, 28)
GUICtrlSetFont(-1, 15, 400, 0, "MS Sans Serif")
$Graphic1 = GUICtrlCreateGraphic(340, 8, 65, 57)
$Button1 = GUICtrlCreateButton("Mostrar", 224, 56, 105, 33, $WS_GROUP)
GUICtrlSetFont(-1, 15, 400, 0, "MS Sans Serif")
GUISetState(@SW_SHOW)
#endregion ### END Koda GUI section ###
Dim $mostrarcolor[343]
For $a = 0 To 342
	$mostrarcolor[$a] = GUICtrlCreateLabel("", 35 + $a, 110, 1, 20)
Next
While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $Button1
			_mostrar()
	EndSwitch
WEnd
Func _mostrar()
	; Color al $Graphic1
	Local $color, $colorvar, $a = 0
	$color = "0x" & GUICtrlRead($Input1)
	GUICtrlSetBkColor($Graphic1, $color)
	; Variaciones del color a las labels $mostrarcolor[]
	$colorvar = GUICtrlRead($Input2)
	$rgbcolor = _ColorGetRGB($color)
	$rgbcolor[0] = $rgbcolor[0] - $colorvar
	$rgbcolor[1] = $rgbcolor[1] - $colorvar
	$rgbcolor[2] = $rgbcolor[2] - $colorvar
	$step = ($colorvar / 7)
	For $r = 1 To 7
		If Hex($rgbcolor[2]) > 0x00 Then
			$rgbcolor[2] = $rgbcolor[2] + int($step)
		EndIf
		For $g = 1 To 7
			If Hex($rgbcolor[1]) > 0x00 Then
				$rgbcolor[1] = $rgbcolor[1] + int($step)
			EndIf
			For $b = 1 To 7
				If Hex($rgbcolor[0]) > 0x00 Then
					$rgbcolor[0] = $rgbcolor[0] +int($step)
					EndIf
				GUICtrlSetBkColor($mostrarcolor[$a], _ColorSetRGB($rgbcolor))
				$a += 1
			Next
			$rgbcolor[2] = _ColorGetBlue($color)
		Next
		$rgbcolor[1] = _ColorGetGreen($color)
	Next
EndFunc   ;==>_mostrar
Si cambian el orden en que van los colores cambia el degradee... :S me parece todo muy raro y apreciaria una mente que me ayude a entender
Avatar de Usuario
BasicOs
Site Admin
Mensajes: 2091
Registrado: 21 Nov 2006, 19:24
Ubicación: El Internet - (Canarias, España)
Contactar:

Re: Pixelsearch variaciones

Mensaje por BasicOs »

Parece que el problema que tienes es que no es muy ajustado el valor almacenad de los pixeles con el que busca realmente. Yo creo que debería ser así, para que lo usas, ¿para algún tipo de aplicación de escritorio-robot o para algo de webcams?,
No obstante hemos añadido algunas funciones adicionales que trabajan con pixel para simplificar todo, las ves En la ayuda, Por aquí
Salu22:)
Avatar de Usuario
ms999
Hacker del Foro
Mensajes: 116
Registrado: 26 Ene 2011, 06:13

Re: Pixelsearch variaciones

Mensaje por ms999 »

Estube viendo lo que hay en el link y se ve mas que interezante, para esto igual creo que no lo necesito...
Ese programita ya esta echo, muestra en algunas labels(125 ) los colores que estarian incluidos en un pixelsearch cuando buscas el shade variation.
Lo que le podria hacer ahora para completarlo seria ordenar los colores para que se muestre como un degradee... lo vere ^^
Gracias!
Responder