为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

全屏截图程序

2017-09-01 8页 doc 25KB 28阅读

用户头像

is_219945

暂无简介

举报
全屏截图程序全屏截图程序 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Runtime.InteropServices; using System.Drawing.Imaging; using System.Draw...
全屏截图程序
全屏截图程序 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Runtime.InteropServices; using System.Drawing.Imaging; using System.Drawing.Drawing2D; using System.Threading; namespace 全屏截图 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } // private static Bitmap bitmap; private void button1_Click(object sender, EventArgs e) { this.Hide(); System.Threading.Thread.Sleep(200); Bitmap bm = windowfullscreen(); pictureBox1.SizeMode = PictureBoxSizeMode.AutoSize; pictureBox1.Image = bm; this.Visible = true; // bm.Save(".\\1.jpg", ImageFormat.Jpeg); // System.Diagnostics.Process.Start("1.jpg"); } [System.Runtime.InteropServices.DllImport("gdi32.dll")] public static extern bool BitBlt( IntPtr hdcDest, //目标设备的句柄 int nXDest, // 目标对象的左上角的X坐标 int nYDest, // 目标对象的左上角的X坐标 int nWidth, // 目标对象的矩形的宽度 int nHeight, // 目标对象的矩形的长度 IntPtr hdcSrc, // 源设备的句柄 int nXSrc, // 源对象的左上角的X坐标 int nYSrc, // 源对象的左上角的X坐标 System.Int32 dwRop // 光栅的操作值 ); public static Bitmap windowfullscreen() { Graphics gfull = Graphics.FromHwnd(IntPtr.Zero); Bitmap bm = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height, gfull); Graphics gbitmap = Graphics.FromImage(bm); IntPtr hdcscreen = gfull.GetHdc(); IntPtr hdcbitmap = gbitmap.GetHdc(); BitBlt(hdcbitmap, 0, 0, bm.Width, bm.Height, hdcscreen, 0, 0, 0x00CC0020); gfull.ReleaseHdc(hdcscreen); gbitmap.ReleaseHdc(hdcbitmap); gfull.Dispose(); gbitmap.Dispose(); return bm; } private void Form1_Load(object sender, EventArgs e) { this.Text = "全屏截图程序"; } private void button2_Click_1(object sender, EventArgs e) { bool isSave = true; SaveFileDialog saveImageDialog = new SaveFileDialog(); saveImageDialog.Title = "Capture screen image save dialog"; saveImageDialog.Filter = @"jpeg|*.jpg|bmp|*.bmp|gif|*.gif"; if (saveImageDialog.ShowDialog() == DialogResult.OK) { string fileName = saveImageDialog.FileName.ToString(); if (fileName != "" && fileName != null) { string fileExtName = fileName.Substring(fileName.LastIndexOf(".") + 1).ToString(); System.Drawing.Imaging.ImageFormat imgformat = null; if (fileExtName != "") { switch (fileExtName) { case "jpg": imgformat = System.Drawing.Imaging.ImageFormat.Jpeg; break; case "bmp": imgformat = System.Drawing.Imaging.ImageFormat.Bmp; break; case "gif": imgformat = System.Drawing.Imaging.ImageFormat.Gif; break; default: MessageBox.Show("只能存取为: jpg,bmp,gif 格式"); isSave = false; break; } } //默认保存为JPG格式 if (imgformat == null) { imgformat = System.Drawing.Imaging.ImageFormat.Jpeg; } if (isSave) { try { pictureBox1.Image.Save(fileName, imgformat); MessageBox.Show("图片已经成功保存!~~"); } catch { MessageBox.Show("保存失败,你还没有截取过图片或已经清空图片!"); } } } } } private bool mouseStatus = false;//鼠标状态,false为松开 private List rectList = new List();//存储所有画过的矩形 private Point startPoint;//鼠标按下的点 private Point endPoint;// private Rectangle currRect;//当前正在绘制的举行 private int minStartX, minStartY, maxEndX, maxEndY;//最大重绘矩形的上下左 右的坐标,这样重绘的效率更高。 private void button3_Click(object sender, EventArgs e) { // Bitmap bp = new Bitmap(pictureBox1.Width,pictureBox1.Height); // label1.DrawToBitmap(bp, new Rectangle(0, 0, pictureBox1.Width, pictureBox1.Height)); // bp.Save(@"d:\form2.bmp"); // ControlPaint.DrawReversibleFrame(new Rectangle(100, 100, 300, 300),Color.Transparent, FrameStyle.Thick); Bitmap b = new Bitmap(currRect.Width,currRect.Height); b.Save(@"d:\\1.bmp", ImageFormat.Jpeg); } private void pictureBox1_MouseDown(object sender, MouseEventArgs e) { mouseStatus = true; startPoint.X = e.X; startPoint.Y = e.Y; //重新一个矩形,重置最大重绘矩形的上下左右的坐标 minStartX = e.X; minStartY = e.Y; maxEndX = e.X; maxEndY = e.Y; } private void pictureBox1_MouseMove(object sender, MouseEventArgs e) { if (mouseStatus) { endPoint.X = e.X; endPoint.Y = e.Y; //这一段是获取要绘制矩形的上下左右的坐标,如果不这样处理的话,只 有从左上开始往右下角才能画出矩形。 //这样处理的话,可以任意方向,当然中途可以更换方向。 int realStartX = Math.Min(startPoint.X, endPoint.X); int realStartY = Math.Min(startPoint.Y, endPoint.Y); int realEndX = Math.Max(startPoint.X, endPoint.X); int realEndY = Math.Max(startPoint.Y, endPoint.Y); minStartX = Math.Min(minStartX, realStartX); minStartY = Math.Min(minStartY, realStartY); maxEndX = Math.Max(maxEndX, realEndX); maxEndY = Math.Max(maxEndY, realEndY); currRect = new Rectangle(realStartX, realStartY, realEndX - realStartX, realEndY - realStartY); //一下是为了获取最大重绘矩形。 Rectangle refeshRect = new Rectangle(minStartX, minStartY, maxEndX - minStartX, maxEndY - minStartY); refeshRect.Inflate(1, 1);//重绘矩形的大小扩展1个单位 this.Invalidate(refeshRect);//失效一个区域,并使其重绘。 } } private void pictureBox1_MouseUp(object sender, MouseEventArgs e) { mouseStatus = false; endPoint.X = e.X; endPoint.Y = e.Y; int realStartX = Math.Min(startPoint.X, endPoint.X); int realStartY = Math.Min(startPoint.Y, endPoint.Y); int realEndX = Math.Max(startPoint.X, endPoint.X); int realEndY = Math.Max(startPoint.Y, endPoint.Y); currRect = new Rectangle(realStartX, realStartY, realEndX - realStartX, realEndY - realStartY); this.Invalidate();//重绘整个界面 } } }
/
本文档为【全屏截图程序】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索