科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件vb打造魔法调色盘

vb打造魔法调色盘

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

下面我要为大家介绍的就是一个具有全屏取色功能的调色盘——魔法调色盘(如图1)。用鼠标点中吸管不要松开,然后移到屏幕的任意地方,该处的颜色将在调色盘中即时显示,而且还能够给出颜色的十六进制值,很有意思吧?

作者:张航  来源:soft6 2008年5月14日

关键字: 调色盘 魔法 VB vb.net Windows

  • 评论
  • 分享微博
  • 分享邮件
我们编写程序或写网页时经常需要得知某种颜色的RGB值或16位进制值(例如:RGB(255,0,0)为红色,相应的16位进制值应该是#ff0000)。这时,你是否会为这么一件小事儿而去打开庞大的Photoshop或 Dreamweaver?其实根本没有这个必要,只要自己动动手,一个强大的调色盘就会出现在我们眼前!不信?下面我要为大家介绍的就是一个具有全屏取色功能的调色盘——魔法调色盘(如图1)。用鼠标点中吸管不要松开,然后移到屏幕的任意地方,该处的颜色将在调色盘中即时显示,而且还能够给出颜色的十六进制值,很有意思吧?

  现在让我们先设计程序界面。启动VB6.0并新建一个“标准EXE”工程。首先修改窗体的Name属性为“frmColor”。接着添加一个较大的图形框Picture1作为颜色显示器,和一个较小的图形框Picture2作为颜色拾取工具,注意Picture2的Icon属性和Picture1属性为同一个图标,图标任意。添加一个文本框,设置其Name属性为txtHex,用来显示相应颜色的16 位进制值。添加三个标签,Name属性分别为lblRed、lblGreen、lblBlue,以及相应的三个水平滚动条,Name属性分别为hslRed、hslGreen、hslBlue。最后设计好的窗体如图2所示。

  好了,现在我们开始编写代码。打开代码编辑器,输入以下代码:

Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long

Private Const HWND_TOPMOST = -1

Private Const SWP_NOSIZE = &H1

Private Sub Form_Load()

''设置窗口在最上层

SetWindowPos frmColor.hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE

''设置滚动条的范围(0-255)

hslRed.Max = 255: hslGreen.Max = 255: hslBlue.Max = 255

hslRed.LargeChange = 10: hslGreen.LargeChange = 10: hslBlue.LargeChange = 10

End Sub
滚动条箭头变化
Private Sub hslBlue_Change()

text_Change

ColorChange_hsl

End Sub


 

[下一页]


 

''滚动块变化

Private Sub hslBlue_Scroll()

text_Change
ColorChange_hsl

End Sub

Private Sub hslGreen_Change()

text_Change

ColorChange_hsl

End Sub

Private Sub hslGreen_Scroll()

text_Change

ColorChange_hsl

End Sub

Private Sub hslRed_Change()

text_Change

ColorChange_hsl

End Sub

Private Sub hslRed_Scroll()

text_Change

ColorChange_hsl

End Sub

''文本框内容变化

Private Sub text_Change()

Dim strRedv, strGreenv, strbluev As String

lblRed.Caption = "R: " & hslRed.Value

lblGreen.Caption = "G: " & hslGreen.Value

lblBlue.Caption = "B: " & hslBlue.Value

strRedv = Hex(hslRed.Value)

strGreenv = Hex(hslGreen.Value)

strbluev = Hex(hslBlue.Value)

txtHex.Text = "#" & strRedv & strGreenv & strbluev

End Sub

''picture1的背景颜色变化

Private Sub ColorChange_hsl()

Picture1.BackColor = RGB(hslRed.Value, hslGreen.Value, hslBlue.Value)

End Sub

  按F5编译运行程序,呵呵,我们已经得到一个具备常用功能的调色盘程序了。但是,这个程序暂时还不支持全屏取色功能,还需要进一步修改。


 

[下一页]


 

  为了得到全屏取色功能,我们需要调用一些额外的API函数。首先点击VB菜单条中的“外接程序(Add-Ins)/外接程序管理器(Add-In Manager)”打开外接程序管理器窗口,在可用外接程序中选择“VB API Viewer”选项,确认已经选中“加载/卸载”复选框后点击“确定”,以后你就可以从菜单的“外接程序”中加载“VB API Viewer”了。打开“VB API Viewer”,点击“文件/加载文本文件”,在“选择一个文本API”对话框中打开 “WIN32API”文件。接着,先把“API类型”设为“声明”,并设置“ 声明范围”为“私有”,依次添加BitBlt、GetCursorPos、GetDC、GetPixel、 ScreenToClient、WindowFromPoint函数到“选定项”窗口中。然后设置 “API类型”为“类型”,添加“POINTAPI”类型到“选定项”窗口中。OK,按下“插入”按钮把代码粘贴到我们的“frmColor”中。下面就是程序中所有必需的函数说明:

Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long

Private Const HWND_TOPMOST = -1

Private Const SWP_NOSIZE = &H1

Private Declare Function BitBlt Lib "gdi32" (ByVal hDestDC 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 dwRop As Long) As Long

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

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章