屏幕颜色任意取

Author: 陈春建 Date: 2001年 10期

    春节,同朋友聊天时,感叹别人的网页做得如何漂亮,尤其某些网页的颜色更是绚丽多彩,但苦于自己总是调不出这样的颜色。于是,我萌发了用VB编写一个可提取屏幕上任意点颜色的想法。本程序主要用了一些Windows API函数。你想知道吗?Follow me!
      1.首先新建一个工程;
      2.单击“工程→添加模块”;
      3.在模块中添假如下代码:
      Option Explicit
      Type POINTAPI '定义一个坐标变量
      x As Long
      y As Long
      End Type
      4.单击“外接程序→API浏览器”,添加以下三个API函数:
      Declare Function GetCursorPos Lib "user32"(lpPoint As POINTAPI)As Long
      Declare Function GetDC Lib "user32"(ByVal hwnd As Long)As Long
      Declare Function GetPixel Lib "gdi32"(ByVal hdc As Long,ByVal x As Long,ByVal y As Long)As Long
      GetCursorPos:获取鼠标指针的当前位置;
      GetDC:获取指定窗口的设备场景,若取GetDC(0),则要获取整个窗体的DC。
      GetPixel:在指定的设备场景中取得一个像素的RGB值。
      将以上三个API函数复制到模块中。
      5.在窗体中添加1个计时器控件(Timer)、4个标签控件(Label)、1个图片框(Picture)和命令按纽(Command),如^10020502a^所示:
      程序代码如下:
      Option Explicit
      Dim z As POINTAPI
      Private Sub Command1_Click()
      End
      End Sub
      Private Sub Timer1_Timer()
      Dim a,b,c,d As Long
      GetCursorPos z '得到坐标
      Label1="点的位置:("&zx&":"&zy&")" '得到X坐标
      Label2="y:"&zy '得到Y坐标
      a=GetPixel(GetDC(0),zx,zy) '得到当前点的颜色
      b=a And &HFF '分离出红色
      c=(a And 65280)\256 '分离出绿色
      d=(a And &HFF0000)\65536 '分离出蓝色
      Label2.Caption="点的RGB("&b&","&c&","&d&")"
      Label3.Caption="16进制色:0x"&Hex(a)
      Label4.Caption="网页颜色:#"&Hex(a)
      Picture1.BackColor=RGB(b,c,d)
      End Sub
      单击运行(F5),就可看见结果。怎么样,很简单吧,还不赶快动手试一试?有问题请与我联系:ccj76@163.net。