• 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(00), new Point(00), 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, 0true);
    122             }
    123             else
    124             {
    125                 InitPos(00false);
    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 

    http://blog.csdn.net/lijgame/archive/2006/12/18/1447921.aspx有参照

  • 相关阅读:
    最新自然语言处理(NLP)四步流程:Embed->Encode->Attend->Predict
    Word Embedding
    知乎:GAN 的发展对于研究通用人工智能有什么意义?
    2016年总结:教师路的开启,爱情味的初尝 (下)
    WinForm 窗口缩放动画效果
    关于DrawIndexedPrimitive函数的调用
    spring mvc--默认都使用了哪些bean
    杭电 HDU 1031 Design T-Shirt
    Android选择/拍照 剪裁 base64/16进制/byte上传图片+PHP接收图片
    hdoj5645DZY Loves Balls
  • 原文地址:https://www.cnblogs.com/scy251147/p/1798331.html
Copyright © 2020-2023  润新知