C#制作的屏幕取色器
1 using System;
2 using System.Collections.Generic;
3 using System.ComponentModel;
4 using System.Data;
5 using System.Drawing;
6 using System.Linq;
7 using System.Text;
8 using System.Windows.Forms;
9 using System.Runtime.InteropServices;
10
11 namespace GetScrColor
12 {
13 public partial class Form1 : Form
14 {
15 public Form1()
16 {
17 InitializeComponent();
18 }
19
20 private bool flag = false;
21
22 public struct POINTAPI
23 {
24 public uint x;
25 public uint y;
26 }
27
28 public class WinInfo
29 {
30 [DllImport("user32.dll")]
31 public static extern uint WindowFromPoint
32 (
33 uint x_point,
34 uint y_point
35 );
36
37 [DllImport("user32.dll")]
38 public static extern bool GetCursorPos
39 (
40 ref POINTAPI p
41 );
42
43 [DllImport("user32.dll")]
44 public static extern uint ScreenToClient
45 (
46 uint hwnd,
47 ref POINTAPI p
48 );
49
50 [DllImport("user32.dll")]
51 public static extern uint GetDC
52 (
53 uint hwnd
54 );
55
56 [DllImport("gdi32.dll")]
57 public static extern uint GetPixel
58 (
59 uint hDC,
60 uint x,
61 uint y
62 );
63
64 [DllImport("user32.dll")]
65 public static extern uint ReleaseDC
66 (
67 uint hwnd,
68 uint hdc
69 );
70 }
71
72 private void Form1_Load(object sender, EventArgs e)
73 {
74 InitPos(0,0,false);
75 Screen s = Screen.PrimaryScreen;
76 Rectangle r = s.Bounds;
77 int iWidth = r.Width;
78 int iHeight = r.Height;
79 //创建一个和屏幕一样大的bitmap
80 Image img = new Bitmap(iWidth,iHeight);
81 //从一个继承自image类的对象中创建Graphics对象
82 Graphics g = Graphics.FromImage(img);
83 //抓取全屏幕
84 g.CopyFromScreen(new Point(0, 0), new Point(0, 0), new Size(iWidth, iHeight));
85 this.WindowState = FormWindowState.Maximized;
86 this.BackgroundImage = img;
87 }
88
89 private void Form1_MouseMove(object sender, MouseEventArgs e)
90 {
91 POINTAPI Papi = new POINTAPI();
92 WinInfo.GetCursorPos(ref Papi);
93 uint v_hwnd = WinInfo.WindowFromPoint(Papi.x, Papi.y);
94 uint v_DC = WinInfo.GetDC(v_hwnd);
95 WinInfo.ScreenToClient(v_hwnd, ref Papi);
96 uint v_Color = WinInfo.GetPixel(v_DC, Papi.x, Papi.y);
97
98 uint v_Red, v_Green, v_Blue;
99 v_Red = v_Color & 0xff;
100 v_Green = (v_Color & 0xff00) / 256;
101 v_Blue = (v_Color & 0xff0000) / 65536;
102
103 this.txtRGB.Text ="#"+v_Red.ToString("x").PadLeft(2, '0') + v_Green.ToString("x").PadLeft(2, '0') + v_Blue.ToString("x").PadLeft(2, '0');
104 this.txtRGBDesc.Text = v_Red.ToString("d") + " " + v_Green.ToString("d") + " " + v_Blue.ToString("d");
105 this.txtShow.BackColor = Color.FromArgb((int)v_Red, (int)v_Green, (int)v_Blue);
106 WinInfo.ReleaseDC(v_hwnd, v_DC);
107 }
108
109 private void InitPos(int x,int y,bool bFlag)
110 {
111 panel1.Left = x;
112 panel1.Top = y;
113 flag = bFlag;
114 }
115
116
117 private void panel1_MouseEnter(object sender, EventArgs e)
118 {
119 if (!flag)
120 {
121 InitPos(this.Width - panel1.Width, 0, true);
122 }
123 else
124 {
125 InitPos(0, 0, false);
126 }
127 }
128
129 private void Form1_KeyDown(object sender, KeyEventArgs e)
130 {
131 if (e.KeyCode == Keys.Escape)
132 {
133 this.Close();
134 }
135 }
136
137 }
138 }
139
C#制作的屏幕取色器的更多相关文章
- TakeColor 屏幕取色器 8.0 中文绿色版
软件名称: TakeColor 屏幕取色器软件语言: 简体中文授权方式: 免费软件运行环境: Win8 / Win7 / Vista / WinXP软件大小: 210KB图片预览: 软件简介:使用方便 ...
- ColorPix——到目前为止最好用的屏幕取色器
分享一个颜色取色器网页.PPT.EXCEL配色不再烦恼 简单易用 大家做商业.企业报告的时候是不是经常遇到要调色的困扰呢?PPT.EXCEL等颜色选取会对报告有质的影响!!要更专业要更有美感!给大家分 ...
- powerpoint取色器有什么用|ppt取色器使用教程
在使用powerpoint过程中常常发现一些功能我们很少用到,其实是自己不会用的原因,关于powerpoint取色器有什么用呢?接下来我们一起来学一下ppt取色器使用教程. powerpoint取色器 ...
- C#取色器
闲来无事,就写了一个取色器.原理其实很简单,只需要两步, 获取鼠标光标的位置, 获取当前鼠标光标的位置的RGB颜色值. 获取鼠标光标的位置: System.Drawing.Point p = Mous ...
- Arava: 用 swing 写一个取色器
备哥以前发我了一个小工具,TakeColor 取色器.来复刻一个吧. 分析一下:顶部是菜单,左侧框显示当前鼠标所在的颜色(下面显示当前坐标和颜色值,默认RGB),中间框显示鼠标周围区域,右侧显示取色的 ...
- 屏幕取色工具推荐 ColorPix
很好用的一个屏幕取色工具,方便套页面时,在图片上取色. 用鼠标指到取色未知,按CTRL+C,就可复制16进制的颜色值. 下载地址:http://files.cnblogs.com/zjfree/Col ...
- Win10手记-取色器ColorPicker的实现
最近个人项目需要用到ColorPicker,但是适用于WinRT和Win10的基本没用,所以只能自己造轮子了. 平台环境 Windows 10 Visual Studio 2015 思路 确定需求后, ...
- 如何使用屏幕取色工具ColorPixl
ColorPix可以屏幕取色,假如现在想要取色桌面徽标键的颜色,按任意键可以锁定这个区域(press any key to lock)这样我们就可以在放大的区域更清楚的取色,加号按钮可以设置该软件是否 ...
- Delphi制作QQ自动登录器源码
Delphi制作QQ自动登录器源码 http://www.cnblogs.com/sunsoft/archive/2011/02/25/1964967.html 以TM2009为例,检查了一下,未登 ...
随机推荐
- RazorSQL for Mac如何编辑数据?
RazorSQL 是一个非开源的功能非常强大数据库查询工具.SQL的编辑.数据库管理工具.支持通过 JDBC 和 ODBC 连接超过 29 种的数据库.允许您从一个数据库工具查询,更新,导航和管理所有 ...
- 在Debian下利用URLOS快速安装SqlServer2017
SqlServer能在Debian上安装吗?答案是可以!网络上也能找到很多Linux系统下安装SqlServer的相关文章,也许经过一些折腾,你也能成功在Debian中安装sqlserver,但是其中 ...
- URLOS开发基础教程——docker容器的使用方法
URLOS本是基于docker容器运行,在入门URLOS开发之前,我们首先需要掌握docker的相关基础知识,本篇就以docker容器的基本使用方法为例,快速的让大家对docker有一个全面的印象. ...
- Leetcode #9 Easy <Palindrome Number>
题目如图,下面是我的解决方法: class Solution { public boolean isPalindrome(int x) { if(x < 0) //由题意可知,小于0的数不可能为 ...
- Java字节流文件封装
/** * 字节流封装方法 */ import java.io.FileInputStream; import java.io.FileNotFoundException; import jav ...
- 最长相同01数的子串(map搞搞)--牛客第三场 -- Crazy Binary String
题意: 如题. 或者用我的数组分治也可以,就是有点愚蠢. //#include <bits/stdc++.h> #include <map> #include <iost ...
- 从入门到自闭之Python随机模块
导入:import random 随机小数:random.random():大于0小于1之间的小数 指定数字之间的小数,不包含指定的最大值:random.uniform() 随机整数:random.r ...
- python-day31(正式学习)
一.单机架构 应用领域: 植物大战僵尸 office 二.CS架构 应用领域: QQ 大型网络游戏 计算机发展初期用户去取数据,直接就去主机拿,从这里开始就分出了客户端和服务端. 客户端:用户安装的软 ...
- luogu题解 P1462 【通往奥格瑞玛的道路】二分+spfa
题目链接: https://www.luogu.org/problemnew/show/P1462 思路: 又是一道水题,很明显二分+最短路 而且这道题数据非常水,spfa有个小错误居然拿了91分还比 ...
- linux入门到高级
目 录 1. Linux入门篇.................................................................................... ...