c# 屏幕快照_用C#实现全屏幕截图实现

publicpartialclassFullScreenForm : Form {privateRectangle rectSelected=Rectangle.Empty;privateboolisClipping=false;privateBitmap screen;privateBitmap coverLayer=null;privateColor coverColor;privateBrush rectBrush=null;privateBitmap resultBmp=null;publicFullScreenForm(Bitmap screen) {

InitializeComponent();intwidth=Screen.PrimaryScreen.Bounds.Width;intheight=Screen.PrimaryScreen.Bounds.Height;

coverLayer=newBitmap(width, height);

coverColor=Color.FromArgb(50,200,0,0);

rectBrush=newSolidBrush(coverColor);using(Graphics g=Graphics.FromImage(coverLayer)) {

g.Clear(coverColor);

}this.Bounds=newRectangle(0,0, width, height);this.screen=screen;this.DoubleBuffered=true;

}protectedoverridevoidOnMouseDown(MouseEventArgs e) {if(e.Button==MouseButtons.Left) {

isClipping=true;

rectSelected.Location=e.Location;

}elseif(e.Button==MouseButtons.Right) {this.DialogResult=DialogResult.OK;

}

}protectedoverridevoidOnMouseMove(MouseEventArgs e) {if(e.Button==MouseButtons.Left&&isClipping) {

rectSelected.Width=e.X-rectSelected.X;

rectSelected.Height=e.Y-rectSelected.Y;this.Invalidate();

}

}protectedoverridevoidOnMouseUp(MouseEventArgs e) {if(e.Button==MouseButtons.Left&&isClipping) {

rectSelected.Width=e.X-rectSelected.X;

rectSelected.Height=e.Y-rectSelected.Y;this.Invalidate();

resultBmp=newBitmap(rectSelected.Width, rectSelected.Height);using(Graphics g=Graphics.FromImage(resultBmp)) {

g.DrawImage(screen,newRectangle(0,0, rectSelected.Width, rectSelected.Height), rectSelected, GraphicsUnit.Pixel);

}this.DialogResult=DialogResult.OK;

}

}protectedoverridevoidOnPaint(PaintEventArgs e) {

Graphics g=e.Graphics;

g.DrawImage(screen,0,0);

g.DrawImage(coverLayer,0,0);

PaintRectangle();

}protectedoverridevoidOnPaintBackground(PaintEventArgs e) {

}protectedoverridevoidOnKeyDown(KeyEventArgs e) {if(e.KeyCode==Keys.Escape) {this.DialogResult=DialogResult.Cancel;

}

}privatevoidPaintRectangle() {using(Graphics g=Graphics.FromImage(coverLayer)) {

g.Clear(coverColor);

GraphicsPath path=newGraphicsPath();

path.AddRectangle(this.Bounds);

path.AddRectangle(rectSelected);

g.FillPath(rectBrush, path);

g.DrawRectangle(Pens.Blue, rectSelected);

}

}publicBitmap ResultBitmap {get{returnresultBmp; }

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值