用VB做拾取颜色的程序 求代码

monica888 2006-10-12 01:01:34
拾取的窗体是一个游戏窗体,不知道用API能否读取出某一区域的颜色?
...全文
341 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
happy_sea 2006-10-13
  • 打赏
  • 举报
回复
只捕捉游戏窗体内的颜色好办,当窗体最小化时一样能取出颜色就不易实现了。。。
IamDeane 2006-10-13
  • 打赏
  • 举报
回复
有难度,顶下
monica888 2006-10-12
  • 打赏
  • 举报
回复
颜色可以取出来,但是有个问题,我的代码是根据鼠标的移动来捕获当前颜色的,但我想实现的是,只捕捉游戏窗体内的颜色,并且当窗体最小化时一样能无误地取出颜色,假设我已知道窗体的hwnd
happy_sea 2006-10-12
  • 打赏
  • 举报
回复
不知道你这个游戏的窗体是不是DirectX做的 -_-!!!
happy_sea 2006-10-12
  • 打赏
  • 举报
回复
这要借助API函数。先使用:
h = CreateDC("DISPLAY", vbNullString, 0, 0)
得到一个hDC,实际就是整个屏幕的hDC。然后利用GetPixel(h, x, y)就可以得到任意点(x, y)的颜色值。
Private Declare Function CreateDC Lib "gdi32" Alias "CreateDCA" _
(ByVal lpDriverName As String, ByVal lpDeviceName As String, _
ByVal lpOutput As String, ByVal lpInitData As Any) As Long

Private Declare Function DeleteDC Lib "gdi32" _
(ByVal hdc 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 Sub Command1_Click()
Dim nDC As Long
OldX = Screen.Width / Screen.TwipsPerPixelX
OldY = Screen.Height / Screen.TwipsPerPixelY
nDC = CreateDC("DISPLAY", vbNullString, vbNullString, ByVal 0&)
Me.BackColor = GetPixel(nDC, 0, 0)
DeleteDC nDC
End Sub

以上摘自问专家网。

1,486

社区成员

发帖
与我相关
我的任务
社区描述
VB API
社区管理员
  • API
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧