PixelGetColor能获取RGB24的数值吗?
Posted: 04 Nov 2019, 09:47
怎么获取比较常见的RGB数值呢?
是否有函数能把RGB16转换到RGB24?
我想要获取屏幕像素的RGB24的数值还有HSV数值,怎么转换怎么获取?
是否有函数能把RGB16转换到RGB24?
我想要获取屏幕像素的RGB24的数值还有HSV数值,怎么转换怎么获取?
Let's help each other out
https://www.autohotkey.com/boards/
https://www.autohotkey.com/boards/viewtopic.php?f=27&t=69512
Code: Select all
#SingleInstance,Force ;决定当脚本已经运行时是否允许它再次运行. ;Force: 跳过对话框并自动替换旧实例, 效果类似于 Reload 命令.
add(x,y)
{
return x+y
}
16bit0x_toRGB(HEX , to := "RGB") ;, rgb := 0)
{
;第二个参数to可以是"RGB"或者"HSV".默认RGB
R := Format("{:i}" ,"0x" SubStr(HEX, 3, 2))
G := Format("{:i}" ,"0x" SubStr(HEX, 5, 2))
B := Format("{:i}" ,"0x" SubStr(HEX, 7, 2))
If (to = "RGB")
{
Return % "RGB: " R " " G " " B
}
If (to = "HSV")
{
max:=max(R,G,B) ;
min:=min(R,G,B)
if (R = max){
H := (G-B)/(max-min)
}
if (G = max){
H := 2 + (B-R)/(max-min)
}
if (B = max){
H := 4 + (R-G)/(max-min)
}
H := Format("{:.0f}" , H := H * 60)
if (H < 0){
H := H + 360
}
;计算方法来源 https www.cnblogs.com /Peit/p/7133244.html Broken Link for safety
V := Format("{:.0f}" , max(R,G,B)*100/255)
S := Format("{:.0f}" , (max-min)*100/max)
Return % "HSV: " H " " S " " V
}
}
;方案4
f3::
CoordMode, Mouse
CoordMode, ToolTip
CoordMode, Pixel
MouseGetPos MouseX, MouseY
pianyi := 3 ;偏移量; 因为不能直接拾取鼠标正下面的像素.会拾取到上次结果颜色的对话"边框".....
MouseX_p := Add(MouseX, pianyi)
MouseY_p := Add(MouseY, pianyi)
Loop
{
Sleep 80
;MouseGetPos MouseX, MouseY
PixelGetColor, color, %MouseX%, %MouseY%, RGB
color001 := 16bit0x_toRGB(color,"RGB")
color002 := 16bit0x_toRGB(color,"HSV")
ToolTip, %color001% `n%color002%, %MouseX_p%, %MouseY_p%
if GetKeyState("MButton" , "p" )
{
ToolTip
break
}
}
return