微信公众号 
图码生活

每天发布有五花八门的文章,各种有趣的知识等,期待您的订阅与参与
电脑报 1992-2001 十年文章全集
电脑报 1992-2001 十年文章全集
包含从 1992 年 - 2001 年间,两万余篇期刊文章,查询最少输入两个字符
随便看看
读取中
读取中
标题屏幕颜色任意取
栏目软件世界
作者陈春建
发布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),如

所示:
  程序代码如下:
  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。