您的位置:首页 > 编程语言 > C#

C# winform实现截屏,附代码

2013-03-11 10:16 561 查看
namespace Message
{
partial class Form3
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;

/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}

#region Windows Form Designer generated code

/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.saveFileDialog1 = new System.Windows.Forms.SaveFileDialog();
this.SuspendLayout();
//
// Form3
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(353, 347);
this.Cursor = System.Windows.Forms.Cursors.Cross;
this.Name = "Form3";
this.Text = "Form3";
this.Load += new System.EventHandler(this.Form3_Load);
this.MouseUp += new System.Windows.Forms.MouseEventHandler(this.Form3_MouseUp);
this.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.Form3_DoubleClick);
this.MouseDown += new System.Windows.Forms.MouseEventHandler(this.Form3_MouseDown);
this.MouseMove += new System.Windows.Forms.MouseEventHandler(this.Form3_MouseMove);
this.ResumeLayout(false);

}

#endregion

private System.Windows.Forms.SaveFileDialog saveFileDialog1;
}
}


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

namespace Message
{
public partial class Form3 : Form
{
private bool down = false;
private Point firstPoint;
private Pen p = new Pen(Color.Red);
private Graphics gra;
private Rectangle rectangle;//存储用户截取的矩形
private FormChat f4;
public Form3(FormChat f4)
{
InitializeComponent();
this.f4 = f4;
}

private void Form3_Load(object sender, EventArgs e)
{
Image img = new Bitmap(Screen.AllScreens[0].Bounds.Width, Screen.AllScreens[0].Bounds.Height);//创建一个和屏幕同样大小的图像
Graphics g = Graphics.FromImage(img);//绘制这个图像
//将屏幕绘制到此图像,第一,二个Point是屏幕要截取的左上角的坐标和绘制到图像的左上角的坐标
g.CopyFromScreen(new Point(0, 0), new Point(0, 0), Screen.AllScreens[0].Bounds.Size);
this.BackgroundImage = img;
this.FormBorderStyle = FormBorderStyle.None;
this.Bounds = Screen.PrimaryScreen.Bounds;
gra = this.CreateGraphics();//主要为了用户截取方便
}
private void Form3_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
down = true;
firstPoint = e.Location;
}
}

private void Form3_MouseUp(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
down = false;
}
if (e.Button == MouseButtons.Middle)
{
this.Close();
}
}

private void Form3_MouseMove(object sender, MouseEventArgs e)
{
if (down)
{
gra.DrawImage(this.BackgroundImage, 0, 0);
rectangle = new Rectangle(Math.Min(firstPoint.X, e.X), Math.Min(e.Y, firstPoint.Y), Math.Abs(e.X - firstPoint.X), Math.Abs(e.Y - firstPoint.Y));
gra.DrawRectangle(p, rectangle);
}
}
private void Form3_DoubleClick(object sender, MouseEventArgs e)
{
if (rectangle.Width != 0 && rectangle.Height != 0)
{
gra.DrawImage(this.BackgroundImage, 0, 0);
Image im = new Bitmap(rectangle.Width, rectangle.Height);
Graphics g = Graphics.FromImage(im);
g.CopyFromScreen(rectangle.Location, new Point(0, 0), rectangle.Size);
if (((MouseEventArgs)e).Button == MouseButtons.Left)
{
Clipboard.Clear();
Clipboard.SetImage(im);
this.f4.Copy();
this.Close();
}
}
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: