实例介绍
【实例简介】
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;
}
}
}
相关软件
网友评论
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
支持(0) 盖楼(回复)
支持(0) 盖楼(回复)
支持(0) 盖楼(回复)
支持(0) 盖楼(回复)
支持(0) 盖楼(回复)