第一次写博客,文笔较差,将就看吧

日常生活中会经常使用到截屏功能,使用最多的无非就是Windows自带的截图工具、QQ截图和PrintScreen键,但要达到截图到word或保存到文件,需要鼠标选择多次。比如我们想截图并将图插入到Word中,不需要保存图片,我们希望直接点击截图按钮,选择截图区域,Ctrl+V简单三步就行了(感觉说了好多废话),切入正题。
1.基本功能
选择屏幕区域后提醒你保存所截的图片,或直接将所截图片放到剪切板里(以便用Ctrl+V粘贴)。
2.界面设计
界面很简单,无非就是可实现以上功能的两个按钮和其他文字,见图:
界面的属性需要注意几个问题:
1)窗口设为固定大小,并禁用窗口最大化(因为我们不希望窗口大小会变)
2)窗口最好设为顶置
3)把两个文字label和两个按钮都放到一个panel里,以便于后面程序对控件属性的操作
4)那么大的按钮,最好改变一下它的样式,还可以设置背景为gif动图
3.功能实现
那么关键问题来了,怎么截图呢?见下图
原理其实很简单,就是在点击按钮后,窗口变为全屏覆盖在屏幕最上方,并变为半透明,使你能看到窗口下面的屏幕内容,然后拖动鼠标(此时其实是在软件的主窗口上拖动,这样就方便程序捕捉鼠标坐标了),根据坐标在屏幕上绘制选框,接着松开鼠标后,根据鼠标落下和松开的坐标,截取屏幕,最后保存或复制到剪切板。
4.敲代码吧
using System;
using System.Windows.Forms;
using System.Drawing;//绘图要用
using System.Threading;//延时函数要用
namespace 截屏
{
public partial class Form1 : Form
{
bool mouseDown = false, havePainted = false;
Point start, end;
Point start1, end1;
Size size = new Size(0, 0);
bool saveFile = true;
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
ReadyToCaptrue();
saveFile = true;
}
private void Form1_MouseDown(object sender, MouseEventArgs e)
{
start = e.Location;
mouseDown = true;
}
private void Form1_MouseUp(object sender, MouseEventArgs e)
{
if (size.Width != 0 && size.Height != 0)
{
ControlPaint.DrawReversibleFrame(new Rectangle(start1, size), Color.Transparent, FrameStyle.Dashed);
havePainted = false;
}
end = e.Location;
if (start.X > end.X)
{
int temp = end.X;
end.X = start.X;
start.X = temp;
}
if (start.Y > end.Y)
{
int temp = end.Y;
end.Y = start.Y;
start.Y = temp;
}
this.Opacity = 0.0;
Thread.Sleep(200);
if (end.X - start.X > 0 && end.Y - start.Y > 0)
{
Bitmap bit = new Bitmap(end.X - start.X, end.Y - start.Y);
Graphics g = Graphics.FromImage(bit);
g.CopyFromScreen(start, new Point(0, 0), bit.Size);
if (saveFile)
{
SaveFileDialog saveFileDialog = new SaveFileDialog();
saveFileDialog.Filter = "png|*.png|bmp|*.bmp|jpg|*.jpg|gif|*.gif";
if (saveFileDialog.ShowDialog() != DialogResult.Cancel)
{
bit.Save(saveFileDialog.FileName);
}
}
else
{
Clipboard.SetImage(bit);
}
g.Dispose();
}
this.WindowState = FormWindowState.Normal;
this.FormBorderStyle = FormBorderStyle.FixedSingle;
panel1.Visible = true;
this.Opacity = 1;
mouseDown = false;
}
private void Form1_MouseMove(object sender, MouseEventArgs e)
{
if (mouseDown)
{
if (size.Width != 0 && size.Height != 0 && havePainted)
{
ControlPaint.DrawReversibleFrame(new Rectangle(start1, size), Color.Transparent, FrameStyle.Dashed);
}
end1 = e.Location;
size.Width = Math.Abs(end1.X - start.X);
size.Height = Math.Abs(end1.Y - start.Y);
start1.X = (start.X > end1.X) ? end1.X : start.X;
start1.Y = (start.Y > end1.Y) ? end1.Y : start.Y;
if (size.Width != 0 && size.Height != 0)
{
ControlPaint.DrawReversibleFrame(new Rectangle(start1, size), Color.Transparent, FrameStyle.Dashed);
havePainted = true;
}
}
}
private void button2_Click(object sender, EventArgs e)
{
ReadyToCaptrue();
saveFile = false;
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void ReadyToCaptrue()
{
this.Opacity = 0.1;
panel1.Visible = false;
this.FormBorderStyle = FormBorderStyle.None;
this.WindowState = FormWindowState.Maximized;
}
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# C#
# 截图
# C#截图程序类似腾讯QQ截图实现代码
# 解决C# 截取当前程序窗口指定位置截图的实现方法
# c#实现winform屏幕截图并保存的示例
# 解决C#全屏幕截图的实现方法
# C#实现网页截图功能
# 对指定的网页进行截图的效果 C#版
# c# 控件截图的简单实例
# C#实现类似qq的屏幕截图程序
# C#实现通过ffmpeg从flv视频文件中截图的方法
# C#实现属于自己的QQ截图工具
# 鼠标
# 设为
# 要用
# 拖动
# 是在
# 来了
# 剪切板
# 还可以
# 最多
# 不需要
# 说了
# 很简单
# 并将
# 使你
# 自带
# 日常生活
# 那么大
# 全屏
# 但要
# 看吧
相关文章:
详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)
在线流程图制作网站手机版,谁能推荐几个好的CG原画资源网站么?
香港服务器租用每月最低只需15元?
已有域名能否直接搭建网站?
大型企业网站制作流程,做网站需要注册公司吗?
高端建站三要素:定制模板、企业官网与响应式设计优化
Avalonia如何实现跨窗口通信 Avalonia窗口间数据传递
导航网站建站方案与优化指南:一站式高效搭建技巧解析
图册素材网站设计制作软件,图册的导出方式有几种?
建站主机是否属于云主机类型?
免费网站制作模板下载,除了易企秀之外还有什么H5平台可以制作H5长页面,最好是免费的?
如何快速上传自定义模板至建站之星?
建站之星IIS配置教程:代码生成技巧与站点搭建指南
如何快速搭建高效可靠的建站解决方案?
制作网站的网址是什么,请问后缀为.com和.com.cn还有.cn的这三种网站是分别是什么类型的网站?
如何快速查询域名建站关键信息?
如何高效利用亚马逊云主机搭建企业网站?
做企业网站制作流程,企业网站制作基本流程有哪些?
建站主机如何选?性能与价格怎样平衡?
宝塔建站无法访问?如何排查配置与端口问题?
网站微信制作软件,如何制作微信链接?
如何在VPS电脑上快速搭建网站?
网站插件制作软件免费下载,网页视频怎么下到本地插件?
小说建站VPS选用指南:性能对比、配置优化与建站方案解析
Android自定义控件实现温度旋转按钮效果
公司门户网站制作公司有哪些,怎样使用wordpress制作一个企业网站?
网站规划与制作是什么,电子商务网站系统规划的内容及步骤是什么?
制作充值网站的软件,做人力招聘为什么要自己交端口钱?
高防服务器租用指南:配置选择与快速部署攻略
长沙企业网站制作哪家好,长沙水业集团官方网站?
python的本地网站制作,如何创建本地站点?
建站之星ASP如何实现CMS高效搭建与安全管理?
名字制作网站免费,所有小说网站的名字?
h5网站制作工具有哪些,h5页面制作工具有哪些?
建站之星×万网:智能建站系统+自助建站平台一键生成
韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐
如何用5美元大硬盘VPS安全高效搭建个人网站?
建站之星2.7模板快速切换与批量管理功能操作指南
网站企业制作流程,用什么语言做企业网站比较好?
微信网站制作公司有哪些,民生银行办理公司开户怎么在微信网页上查询进度?
广州商城建站系统开发成本与周期如何控制?
成都响应式网站开发,dw怎么把手机适应页面变成网页?
武汉网站制作费用多少,在武汉武昌,建面100平方左右的房子,想装暖气片,费用大概是多少啊?
黑客入侵网站服务器的常见手法有哪些?
如何在新浪SAE免费搭建个人博客?
C#怎么创建控制台应用 C# Console App项目创建方法
太平洋网站制作公司,网络用语太平洋是什么意思?
官网自助建站平台指南:在线制作、快速建站与模板选择全解析
专业网站设计制作公司,如何制作一个企业网站,建设网站的基本步骤有哪些?
北京制作网站的公司排名,北京三快科技有限公司是做什么?北京三快科技?
*请认真填写需求信息,我们会在24小时内与您取得联系。