C++控制台程序如何捕捉屏幕颜色

C++控制台程序如何捕捉屏幕颜色,第1张

ConsoleTitle = "131"; //设置控制台窗口的标题

ConsoleForegroundColor = ConsoleColorRed; //设置字体颜色为红色

ConsoleBackgroundColor = ConsoleColorGreen; //设置黑屏为绿屏,即背景颜色

你要函数的话,无非就是

读取屏幕颜色的软件很多,但是像要触发按键,这个需要后期制作一个程序,读取像素颜色的软件比如有,pipette软件,他只要一个按键,只要按下按键不用松开鼠标左键划过颜色就可以读取颜色,要锁定颜色只要鼠标右键就可以。

takecolor软件,是一款比较小巧灵活的拾取颜色的软件,使用快捷键alt+c就可以读取颜色值来。

使用adb命令可以实时获取Android设备屏幕上指定坐标点的颜色值,可以通过该功能进行屏幕截图、颜色取色等 *** 作。需要使用adbshell命令结合screencap和dd命令来实现。ADB是一种用于与Android设备通信的命令行工具,可以通过ADB命令实现对Android设备的控制和调试,其中,通过ADB实时获取屏幕坐标点颜色是一种常见的应用场景,可以用于开发调试、自动化测试等方面,具体实现方法如下:

1、连接Android设备到电脑,并打开USB调试模式。

2、在电脑上打开命令行工具,输入adbdevices命令,确认设备已连接成功。

3、输入adbshell命令,进入设备的shell环境。

4、输入screencap-p/sdcard/screenshotpng命令,将当前屏幕截图保存到设备的sdcard目录下。

5、输入ddif=/sdcard/screenshotpngbs=4count=1skip=$((320100+200))|hexdump-e'1/1%02x'命令,获取屏幕坐标点(320,100)的颜色值。

使用LuaDC软件,把LUA拖到LuaDC上去就行了。

Lua 是一个小巧的脚本语言。

Lua脚本可以很容易的被C/C++ 代码调用,也可以反过来调用C/C++的函数,这使得Lua在应用程序中可以被广泛应用。不仅仅作为扩展脚本,也可以作为普通的配置文件,代替XML,ini等文件格式,并且更容易理解和维护。

Private Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long

Private Declare Function GetPixel Lib "gdi32" (ByVal hdc As Long, ByVal X As Long, ByVal Y As Long) As Long

Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long

Private Type POINTAPI

X As Long

Y As Long

End Type

Sub Form_Load()

Timer1Enabled = True

Timer1Interval = 1

End Sub

Private Sub Timer1_Timer()

AutoRedraw = True

Dim p As POINTAPI

dc = GetDC(0)

GetCursorPos p

Cls

Print pX, pY

Print Hex(GePixel(dc, pX, pY))

End Sub

在窗体上放一个 timer控件,运行即可,vb60环境通过调试,

先截图,再提取像素

在窗体上放一个PictureBox,叫PicT,ScaleMode=3,作截屏的目标。

代码如下

------------------------------

Dim RGB() As Long

Private Const SRCCOPY = &HCC0020

Private Declare Function GetDC Lib "user32" (ByVal hWnd As Long) As Long

Private Declare Function StretchBlt Lib "gdi32" (ByVal hDC As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal nSrcWidth As Long, ByVal nSrcHeight As Long, ByVal dwRop As Long) As Long

Private Sub Form_Load()

PicTHeight = ScreenHeight

PicTWidth = ScreenWidth

End Sub

'如果需要,可以直接用这个

Private Sub GetPoints(x() As Long, y() As Long)

'截屏

StretchBlt PicThDC, 0, 0, ScreenWidth, ScreenHeight, GetDC(0), 0, 0, ScreenWidth, ScreenHeight, SRCCOPY

'将以x的大小为准,xy坐标应配套用

ReDim RGB(UBound(x))

Dim i As Long

For i = 0 To UBound(x)

'得到点颜色,返回的是类似rgb()的数字,好像和GetPixel一样(OLE_COLOR)

RGB(i) = PicTPoint(x(i), y(i))

Next i

End Sub

---------------------------

下面是使用示例

---------------------------

Private Sub Command1_Click()

'这一块你可以用循环进行赋值,本例取3点

Dim x(2) As Long, y(2) As Long

x(0) = 50

x(1) = 100

x(2) = 300

y(0) = 50

y(1) = 100

y(2) = 300

'赋值结束,传入参数

GetPoints x(), y()

'输出结果

MsgBox RGB(0)

MsgBox RGB(1)

MsgBox RGB(2)

End Sub

PS:我只在win7里试过,xp应该也行。

rgb这么分解:

Red = (Color Mod 256)

Green = ((Color Mod 65536) \ 256)

Blue = (Color \ 65536)

以上就是关于C++控制台程序如何捕捉屏幕颜色全部的内容,包括:C++控制台程序如何捕捉屏幕颜色、有没有可以读取屏幕像素点颜色并且触发按键的软件、adb实时获取屏幕坐标点颜色等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9504320.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-29
下一篇2023-04-29

发表评论

登录后才能评论

评论列表(0条)

    保存