基本信息
源码名称:C#高仿QQ截图
源码大小:0.88M
文件格式:.zip
开发语言:C#
更新时间:2016-12-12
   友情提示:(无需注册或充值,赞助后即可获取资源下载链接)

     嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300

本次赞助数额为: 3 元 
   源码介绍

C#高仿QQ截图

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Windows.Forms;

namespace _SCREEN_CAPTURE
{
    [Designer(typeof(ColorBoxDesginer))]
    public partial class ColorBox : Control
    {
        public ColorBox() {
            InitializeComponent();
            selectedColor = Color.Red;
            m_rectSelected = new Rectangle(-100, -100, 14, 14);

            this.SetStyle(ControlStyles.ResizeRedraw, true);
            this.SetStyle(ControlStyles.OptimizedDoubleBuffer, true);
            this.SetStyle(ControlStyles.AllPaintingInWmPaint, true);
            this.SetStyle(ControlStyles.UserPaint, true);
            this.SetStyle(ControlStyles.SupportsTransparentBackColor, true);
        }

        private Color selectedColor;
        public Color SelectedColor {
            get { return selectedColor; }
        }

        private Point m_ptCurrent;
        private Rectangle m_rectSelected;
        private Bitmap m_clrImage = global::_SCREEN_CAPTURE.Properties.Resources.color;
        private Color m_lastColor;

        public delegate void ColorChangedHandler(object sender, ColorChangedEventArgs e);
        public event ColorChangedHandler ColorChanged;
        protected virtual void OnColorChanged(ColorChangedEventArgs e) {
            if (this.ColorChanged != null)
                ColorChanged(this, e);
        }

        protected override void OnClick(EventArgs e) {
            Color clr = m_clrImage.GetPixel(m_ptCurrent.X, m_ptCurrent.Y);
            if (clr.ToArgb() != Color.FromArgb(255, 254, 254, 254).ToArgb()
                && clr.ToArgb() != Color.FromArgb(255, 133, 141, 151).ToArgb()
                && clr.ToArgb() != Color.FromArgb(255, 110, 126, 149).ToArgb()) {
                if (this.selectedColor != clr)
                    this.selectedColor = clr;
                this.Invalidate();
                this.OnColorChanged(new ColorChangedEventArgs(clr));
            }
            base.OnClick(e);
        }

        protected override void OnMouseMove(MouseEventArgs e) {
            m_ptCurrent = e.Location;
            try {
                Color clr = m_clrImage.GetPixel(m_ptCurrent.X, m_ptCurrent.Y);
                if (clr != m_lastColor) {
                    if (clr.ToArgb() != Color.FromArgb(255, 254, 254, 254).ToArgb()
                        && clr.ToArgb() != Color.FromArgb(255, 133, 141, 151).ToArgb()
                        && clr.ToArgb() != Color.FromArgb(255, 110, 126, 149).ToArgb()
                        && e.X > 39) {
                        m_rectSelected.Y = e.Y > 17 ? 17 : 2;
                        m_rectSelected.X = ((e.X - 39) / 15) * 15 38;
                        this.Invalidate();
                    } else {
                        m_rectSelected.X = m_rectSelected.Y = -100;
                        this.Invalidate();
                    }
                }
                m_lastColor = clr;
            } finally {
                base.OnMouseMove(e);
            }
        }

        protected override void OnMouseLeave(EventArgs e) {
            m_rectSelected.X = m_rectSelected.Y = -100;
            this.Invalidate();
            base.OnMouseLeave(e);
        }

        protected override void OnPaint(PaintEventArgs e) {
            Graphics g = e.Graphics;
            g.DrawImage(global::_SCREEN_CAPTURE.Properties.Resources.color,
                new Rectangle(0, 0, 165, 35));
            g.DrawRectangle(Pens.SteelBlue, 0, 0, 164, 34);
            SolidBrush sb = new SolidBrush(selectedColor);
            g.FillRectangle(sb, 9, 5, 24, 24);
            g.DrawRectangle(Pens.DarkCyan, m_rectSelected);
            base.OnPaint(e);
        }

        protected override void SetBoundsCore(int x, int y, int width, int height, BoundsSpecified specified) {
            base.SetBoundsCore(x, y, 165, 35, specified);
        }
    }

    public class ColorChangedEventArgs : EventArgs
    {
        private Color color;
        public Color Color {
            get { return color; }
        }

        public ColorChangedEventArgs(Color clr) {
            this.color = clr;
        }
    }
}