65.9K
CodeProject 正在变化。 阅读更多。
Home

颜色拾取器

starIconstarIcon
emptyStarIcon
starIcon
emptyStarIconemptyStarIcon

2.15/5 (8投票s)

2007年10月1日

CPOL

1分钟阅读

viewsIcon

27189

downloadIcon

292

一个从桌面拾取颜色的实用程序。

Screenshot - ColorGrabber.jpg

引言

这是一个用于从桌面捕获颜色的实用工具。

背景

我在一个 Web 项目中需要一个 HTML 颜色,但由于我只有页面的位图,我不知道这些颜色。

然后我想起我用 VB6 写过一个实用工具。我决定将其移植到 VB.NET,并将 HTML 颜色代码添加到结果中。

Using the Code

该实用工具非常易于使用。只需运行 EXE,单击“Go”按钮,然后移动鼠标即可。

单击“Go”按钮后,我会捕获桌面并在主窗体下方显示的一个辅助窗体上将其显示为图像。鼠标热点下的像素的颜色将在主窗体窗口中显示,并以 RGB 和 HTML 代码的形式显示。

通过在显示“正确”颜色时单击,HTML 代码将被放入剪贴板。

关注点

旧的 VB6 代码冗长得多。Form.BackgroundImage 属性大大减少了代码量。这一行代码

Me.BackgroundImage = PerformCapture()

取代了更多的 VB6 代码行。

由于我不知道如何找到嵌入到框架中的 API,我保留了旧的 API 调用。

例如

<System.Runtime.InteropServices.DllImportAttribute("gdi32.dll")> _ 
Private Shared Function BitBlt(ByVal hdcDest As IntPtr, 
    ByVal nXDest As Int32, ByVal nYDest As Int32, ByVal nWidth As Int32, 
    ByVal nHeight As Int32, ByVal hdcSrc As IntPtr, _ ByVal nXSrc As Int32, 
    ByVal nYSrc As Int32, ByVal dwRop As Int32) As Boolean End Function 

Declare Auto Function CreateDC Lib "gdi32" (ByVal lpDriverName As String, 
    _ ByVal lpDeviceName As String, ByVal lpOutput As String, 
    ByVal lpInitData As IntPtr) As IntPtr

这还展示了在 VB.NET 中声明 API 的两种不同方法。

历史

  • 2007 年 10 月 1 日:初始发布
  • 2010 年 2 月 17 日:进行了一些代码更改并升级到 Visual Studio 2008
© . All rights reserved.