热情软件屋

 

如何才能判断屏幕上任意一点的像素颜色


编号:QA002814
建立日期: 2000年4月5日 最后修改日期:2003年11月30日
所属类别:

arivd:
    操作系统: windows 98
    编程工具: vb6
    问题: 如何才能判断当前屏幕上任意一点(不受句柄的影响)的像素颜色?

回答:

    这要借助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
    

此问题由李海回答。

附加关键字:编程, 源程序, programming, source code, Visual Basic, VB, 图形、图象, picture, graph, image, draw

 
把这个问题推荐给朋友
   
   
您的意见类别
您的名字
您的电子邮件
您的建议(请尽可能详细)
 
 

版权所有 1997-2008 热情软件屋
如果您有任何建议和意见, 请给我发个电子邮件 askpro@china-askpro.com
Web Designed by ZebraStudio