颜色转换助手RGB888-565
工作中有时需要将颜色的到模式转换,比如rgb888与rgb565之间,有时还需要选择图片上某处颜色,还要知道RGB值。为了方便,便做了个小软件。
1.rgb888与rgb565的转换
如下,888到565是有损失的。
//根据RGB数值改变色盘颜色private void set_color(){if (btn_trans.Text.ToLower() == "rgb888"){colorshow.BackColor = Color.FromArgb((int)setR.Value, (int)setG.Value, (int)setB.Value);}else{colorshow.BackColor = Color.FromArgb((int)setR.Value << 3, (int)setG.Value << 2, (int)setB.Value << 3);}}
2.颜色拾取
这里要用到WINDOWS API
public Timer tim_getcolor = new Timer();
[DllImport("user32.dll")]//取设备场景 private static extern IntPtr GetDC(IntPtr hwnd);//返回设备场景句柄 [DllImport("gdi32.dll")]//取指定点颜色 private static extern int GetPixel(IntPtr hdc, Point p);
tim_getcolor.Interval = 200;tim_getcolor.Tick += delegate{Point p = new Point(MousePosition.X, MousePosition.Y);//取置顶点坐标 IntPtr hdc = GetDC(new IntPtr(0));//取到设备场景(0就是全屏的设备场景) int c = GetPixel(hdc, p);//取指定点颜色 , Color.FromArgb(c)中c是argb或rgb排列,这里是bgrint r = (c & 0xFF);//转换R int g = (c & 0xFF00) / 256;//转换G int b = (c & 0xFF0000) / 65536;//转换B this.colorshow.BackColor = Color.FromArgb(r, g, b);lab_loc.Text = p.ToString(); //显示坐标};
处理按钮点击事件
private void btn_pick_Click(object sender, EventArgs e){if ( isClickInBtn == false){this.btn_pick.Enabled = false;tim_getcolor.Enabled = true;tim_getcolor.Start();}isClickInBtn = false;}
还有全局鼠标按下事件,这里需要使用鼠标的钩子函数
//按下鼠标键事件private void mh_MouseDownEvent(object sender, MouseEventArgs e){if ( tim_getcolor.Enabled == true && e.Button == MouseButtons.Left){tim_getcolor.Stop();tim_getcolor.Enabled = false;allowTansColor = false;colorTOrgbval(this.btn_trans.Text, this.colorshow.BackColor);allowTansColor = true;setrgbvalTXT();this.btn_pick.Enabled = true;Point formPoint = this.btn_pick.PointToClient(Control.MousePosition);if (this.btn_pick.ClientRectangle.Contains(formPoint)) //点到按钮{isClickInBtn = true;} }}
由于代码太多没法全部贴出,感兴趣的可以下载
1.exe文件:http://download.csdn.net/download/wangzibigan/10165053
2.源码:http://download.csdn.net/download/wangzibigan/10165055
3.效果
PS:发现获取屏幕像素时加个放大镜功能会好一点
1.创建一没边框窗体A。
2.点击获取按钮时,获取屏幕位图。
3.将桌面位图的相应部分绘制到窗体A。
FormMagnifier formMagnifier = new FormMagnifier(); //新建一窗体,窗体为无边框
ScreenBmp = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height);Graphics gs = Graphics.FromImage(ScreenBmp); gs.CopyFromScreen(new Point(0, 0), new Point(0, 0), ScreenBmp.Size);//截屏gs.Dispose();
formMagnifier.Location = new Point(MousePosition.X -formMagnifier.Width/ 2, MousePosition.Y -formMagnifier.Height/2);formMagnifier.BackgroundImage = new Bitmap(formMagnifier.Width, formMagnifier.Height);gs = Graphics.FromImage(formMagnifier.BackgroundImage);gs.DrawImage(ScreenBmp, new Rectangle(0, 0, formMagnifier.Width, formMagnifier.Height), new Rectangle(MousePosition.X - formMagnifier.Width / magnification / 2, MousePosition.Y - formMagnifier.Height / magnification / 2, formMagnifier.Width / magnification, formMagnifier.Height / magnification), GraphicsUnit.Pixel);gs.Dispose();formMagnifier.Show();
在定时器事件里加上
formMagnifier.Location = new Point(MousePosition.X - formMagnifier.Width / 2, MousePosition.Y - formMagnifier.Height / 2);Graphics gs = formMagnifier.CreateGraphics();gs.DrawImage(ScreenBmp, new Rectangle(0, 0, formMagnifier.Width, formMagnifier.Height), new Rectangle(MousePosition.X - formMagnifier.Width / magnification/2, MousePosition.Y - formMagnifier.Height / magnification / 2, formMagnifier.Width / magnification, formMagnifier.Height / magnification), GraphicsUnit.Pixel);gs.Dispose();
效果如下:(我用系统自带的工具截图,鼠标截不了,实际上是有鼠标光标的)
颜色转换助手RGB888-565相关推荐
- [JS] HEX颜色转换成RGBA
写了一个函数,可以把hex格式的颜色转为rgba的格式 实际上不是颜色转换,主要是slice()函数的使用吧,当成字符串理解就好. function change(hex) {if (hex.leng ...
- 使用Python和OpenCV在图像之间执行超快速的颜色转换
使用Python和OpenCV在图像之间执行超快速的颜色转换 1. 效果图 2. 原理 2.1 颜色转移算法 2.2 步骤 2.3 算法改进 3. 源码 参考 这篇博客将介绍如何使用Python和Op ...
- android md风格Switch,带有图标动画和颜色转换的Switch – material...
Material Animated Switch 一个MD风格的Switch,带有图标动画和颜色转换. 如何使用 默认情况下显示收件箱锁定开关 android:id="@+id/pin&qu ...
- c语言提取颜色,C语言颜色转换宏
C语言颜色转换宏 #define COLOR_BPP16_RGB555 /* Win RGB */ #define COLOR_RGB(r,g,b) ((COLORREF)(((BYTE)(r)|(( ...
- 计算机中的颜色XIII——颜色转换的快速计算公式
本文的公式的基础都是在前文的基础上的.详情请参看前文: 计算机中的颜色I--颜色概述 计算机中的颜色II--VB2005中的Color结构 计算机中的颜色III--HSV表示方法 计算机中的颜色IV- ...
- DCMTK:测试dcmiod的颜色转换功能
DCMTK:测试dcmiod的颜色转换功能 测试dcmiod的颜色转换功能 测试dcmiod的颜色转换功能 #include "dcmtk/config/osconfig.h" # ...
- php rgb,php颜色转换函数hex-rgb
一个很使用的php颜色转换函数,用于将hex表示的颜色值转换为rgb格式.例如:#dfdfdf转换成(239,239,239) 用法: var_dump(hex2rgb("#efefef&q ...
- iOS开发-16进制颜色转换
项目中经常会用到颜色转换,有的是通过十六进制转成数字转颜色,想简单的点直接通过字符串转一下,简单扩展了一下分类UIColor,代码如下: +(UIColor *)colorWithHex:(NSStr ...
- html color 转换,Color颜色转换的三种方式(c#)
Color颜色转换 1.在.net中如何把一个色名称转换成HTML色? System.Drawing.Color color = System.Drawing.Color.White; string ...
最新文章
- 程序员能成为设计师吗
- tinymce4.x 上传本地图片(自己写个插件)
- Centos 7 安装 rabbitmq 3.6.6
- 算力大战是BCH最坏的一种处理方式
- 【转载】程序员有哪些电脑技能让外行感到神奇?
- Angular Forms - 自定义 ngModel 绑定值的方式
- throwable_您想了解的所有Throwable
- junit5和junit4_JUnit 5 –条件
- python index 报错_python基础语法常见报错类型
- 想做数学建模?先看看这些MATLAB函数吧!
- Expert C Programming学习笔记(1)
- 读取xml数据装配到字典中之应用场景
- AppStore图片尺寸以及内容要求Screenshot specifications
- Excel VBA | 一键批量生成对账单
- 方差齐性检验python实现
- 为什么年终奖是一个彻头彻尾的职场圈套?
- 安卓 usb音量调节_各大厂商不重视的音量调节键,被一个安卓APP玩出花了
- C++课设-学生信息管理系统
- 自动化横行的今天,手工测试如何杀出一条血路?
- 卡巴斯基发布操作系统Kaspersky OS