最好用的取色器,颜色转换器

jy8888 jy8888     2023-02-25     192

关键词:

  你有没有遇到过这样的情况,浏览网页或者浏览图片或者工作中,突然看到一个颜色,特别想拿到这个RGB颜色或者16进制颜色。(然后解决的方法就是截图存下来,拿到PS里去查看颜色。)

 

  你还有没有遇到过这样的情况,只有一个RGB颜色或者16进制颜色,却无法转换。(然后解决的方法就是截图存下来,拿到PS里去转换颜色。)

  所以今天花了点时间做了一款小工具。虽然很小但却很好用,大小仅有39kb。但是代码却很强大,甚至会被杀软误报(由于使用了键盘钩子,完全无毒请放心使用)。

(一)颜色拾取

  引用系统API

        /// <summary>
        /// 获取指定窗口的设备场景
        /// </summary>
        /// <param name="hwnd">将获取其设备场景的窗口的句柄。若为0,则要获取整个屏幕的DC</param>
        /// <returns>指定窗口的设备场景句柄,出错则为0</returns>
        [DllImport("user32.dll")]
        public static extern IntPtr GetDC(IntPtr hwnd);

        /// <summary>
        /// 释放由调用GetDC函数获取的指定设备场景
        /// </summary>
        /// <param name="hwnd">要释放的设备场景相关的窗口句柄</param>
        /// <param name="hdc">要释放的设备场景句柄</param>
        /// <returns>执行成功为1,否则为0</returns>
        [DllImport("user32.dll")]
        public static extern Int32 ReleaseDC(IntPtr hwnd, IntPtr hdc);

        /// <summary>
        /// 在指定的设备场景中取得一个像素的RGB值
        /// </summary>
        /// <param name="hdc">一个设备场景的句柄</param>
        /// <param name="nXPos">逻辑坐标中要检查的横坐标</param>
        /// <param name="nYPos">逻辑坐标中要检查的纵坐标</param>
        /// <returns>指定点的颜色</returns>
        [DllImport("gdi32.dll")]
        public static extern uint GetPixel(IntPtr hdc, int nXPos, int nYPos);

  不知道为何用下面的引用就是获取不到颜色,一直返回-1

private static extern int GetPixel(IntPtr hdc, Point p);

  调用方法如下

     public Color GetColor(int x, int y)
        
            IntPtr hdc = GetDC(IntPtr.Zero); uint pixel = GetPixel(hdc, x, y);
            ReleaseDC(IntPtr.Zero, hdc);
            Color color = Color.FromArgb((int)(pixel & 0x000000FF), (int)(pixel & 0x0000FF00) >> 8, (int)(pixel & 0x00FF0000) >> 16);
            return color;
        

效果如图

技术分享图片

  由于颜色拾取是根据鼠标位置来拾取的,那怎么把颜色锁住呢?这就需要键盘钩子了,需要监听鼠标按键,光程序内部的MouseClick是不行的,当窗体没有激活的时候也需要获取颜色。所以用到了键盘钩子,键盘钩子代码量太大就不发了,有兴趣的可以联系我。键盘钩子会被部分杀软报毒,原因是它可以监视鼠标和键盘,打密码也会被监视,这个就有点恐怖了。

(二)颜色转换

  这个功能的代码就相对简单了。不管怎么转换只要能拿到Color就可以互相转换。代码如下:

  RGB转Color

        try
            
                string rgbstr = txt_rbg1.Text.Replace(",", ",");
                int[] list = Array.ConvertAll<string, int>(rgbstr.Split(‘,‘), x => Convert.ToInt32(x));
                if (list.Length == 3)
                
                    Color c = Color.FromArgb(list[0], list[1], list[2]);
                    JConvert(c);
                
            
            catch
            
                return;  

16进制颜色转Color

        try
            
                Color c = System.Drawing.ColorTranslator.FromHtml(txt_color161.Text);
                JConvert(c);
            
            catch
            
                return;
                

效果如图技术分享图片

 

最后放出链接

https://pan.baidu.com/s/1aiNgsIDnKLTx8nq1XtvOBA

python制作拾色器!鼠标点击即可获取当前位置的颜色!(代码片段)

...到配色问题,如果是在PPT中,只需使用颜色填充的取色器功能,就可以获取指定点的颜色,为自己作品增香添色。上篇文章说 查看详情

android12取色引擎相关问题

...出原始颜色,但有些时候直接使用原始颜色,并不能达到最好的效果。例如:PixelLauncher的插件实现颜色动态变化,除了从Wallpaper中拿到颜色,还进行了二次加工,使其更符合MaterialDesgin的风格,这也是符合“Monet”主题系统中的... 查看详情

推荐一个在线取色器

推荐一个在线取色器网址:https://link.fobshanghai.com/rgbcolor.htm 查看详情

使用谷歌浏览器取色器取色

首先需要调到开发者模式,然后再点击图下的标识。 接着变成图标,点击就可以出现取色器。 查看详情

vs2008如何调出取色器窗口?

在用DW编写CSS代码的时候,比如写background-color:时按#后,会出现颜色窗口,用起来很方便,我在vs2008中就没有颜色窗口了,怎么办呢?我是自学的。求教!很简单在对话框工具栏拖一个colorDialog1控件然后在颜色按钮下写事件if(colo... 查看详情

css全部理解

...面可以跟多种颜色数据颜色英文red#06a0de直接用pycharm提供的取色器即可rgb(1,1,1)可以利用截图软件获取三基色数字rgba(0,128,128,0.9)最后一个数字只能用来调节颜色的透明度语义a{text-decoration:none;}取消a标签 查看详情

win10下,takecolor取色器错位指针偏移问题解决方法

当win10的屏幕缩放比例不是100%时,屏幕取色器ColorPix指针会发生偏移解决:1.右击—>属性—>兼容性2.勾选"高DPI缩放替代" 查看详情

unity实现鼠标拾取电脑屏幕指定区域像素点颜色(代码片段)

...orPicker插件取色笔功能修改Image和Text的颜色3、测试修改后的取色笔功能1.编辑器内测试2.打包exe后测试👉一、前言及知识点1、前言开发时常遇到要动态修改物体或UI的颜色的需求,而且需要像Unity编辑器一样弹出颜色选择... 查看详情

色彩搭配利器:最好用的配色工具apptop5

EyeDrop.me –视觉设计师的好助手作为一名视觉设计师,在方案伊始,经常会为如何做出一套好的配色方案而纠结,通过一张漂亮的风景照片从中提取出若干个颜色进行搭配,就是一种比较常见的做法。而这款配色工具则绝... 查看详情

pythongui工具——取色器(代码片段)

一共三个py文件,分别保存为MyWindow.py(主文件)Qwindow.py(Qt生成的文件)以及res_rc.py(资源文件),运行效果如下:原理有什么不懂的可以留言问,我不想讲,代码都贴出来了。资源文件就是把那三张图片用代码存起... 查看详情

我要颜色代码,改变文件名颜色的那种!0x00ff0000这种格式!desktop.ini用的!

...如果在取色器里面看到的代码是#0f6b86(是一种蓝色)那么在用的时候就要0x00+866b0f(这里对调前两位R和后两位B)得到的就是0x00866b0f显示的就是你所选择的蓝色,其他颜色同理置换~~参考资料:个人经验参考技术A晕,你不会在百度搜索1... 查看详情

focusky教程|自定义背景颜色

...,选择“纯色”,在拾色器上选择合适的颜色,也可以用取色器取色。   3.      选择“线性渐变”、“径向渐变”。渐变色的颜色由渐变条下方的色标完成。如下图,有两个色标,分别是橙色和... 查看详情

rgba()如何知道rgb颜色是由哪个rgb值经过百分之三十透明过来的?有计算方法吗?

...就是下面这种效果啦~灰色是乱画的别介意然后我们再用取色器取右边第一道的颜色,色值为#b74242,恢复后色彩的饱和度+1,明度-1,取色后自行加减,即可恢复原色你可以试试下面的绿色哦,也是可以恢复为原色的,我就不截图... 查看详情

vue之获取并修改元素样式(比如案例取色器的实现)(代码片段)

...到对应的那个元素,这个自行打开控制台查找(最好使用唯一的class,这样默认就是[0],id的话就不存在这个情况);这种方式只支持行内样式。选其一即可利 查看详情

javascriptrgb转换为hex十六进制

...gxinxu.com/wordpress/2010/03/javascript-hex-rgb-hsl-color-convert/今天用取色器取颜色的时候,发现在chrome中显示如下所以需要对取得的数据进行转换。1Sys.rgbToHex=function(color){2vararr=[] 查看详情

Android 拾色器透明问题

】Android拾色器透明问题【英文标题】:AndroidColorPickerTransparentIssue【发布时间】:2015-11-1808:07:59【问题描述】:我正在尝试在便笺中从拾色器中添加颜色,效果很好。但是如果没有从拾色器中选择颜色,它会直接将透明颜色应用... 查看详情

最好用的pdf转换成word的转换器是啥呀

...针对pdf文档的情况,选用不同的软件 参考技术B现在这类转换器超多,没有都用过就不能说最好,不过我用的迅捷pdf转换器还是不错的,转换效果和速度都很好。 参考技术CpdfConverter 查看详情

vb用getpixel屏幕取色的几个问题

...手教下我,多谢了!如果能给我一段符合我要求的代码(最好有注释)再追加50分我不是太明确你第一个问题的意思。我的理解是你要对屏幕的某个目标进行取色。问题是如何确认这个目标的位置。如果目标是固定的坐标或者在... 查看详情