c# 屏幕快照_C#屏幕截图-阿里云开发者社区

本文介绍了一个C#实现的屏幕快照程序,通过创建一个窗口,监听鼠标事件来确定截图区域。用户按下鼠标左键选择截图起点,拖动鼠标确定截图大小,释放鼠标时完成截图并保存为PNG文件。程序利用Graphics.CopyFromScreen方法从屏幕上复制指定区域到Bitmap对象,然后用户可以选择保存路径保存图片。
摘要由CSDN通过智能技术生成

public partial classCaptureWindow : Window

{private doublex;private doubley;private doublewidth;private doubleheight;private bool isMouseDown = false;publicCaptureWindow()

{

InitializeComponent();

}private void CaptureWindow_MouseDown(objectsender, MouseButtonEventArgs e)

{

isMouseDown= true;

x= e.GetPosition(null).X;

y= e.GetPosition(null).Y;

}private void CaptureWindow_MouseMove(objectsender, System.Windows.Input.MouseEventArgs e)

{if(isMouseDown)

{//1. 通过一个矩形来表示目前截图区域

System.Windows.Shapes.Rectangle rect = newSystem.Windows.Shapes.Rectangle();double dx = e.GetPosition(null).X;double dy = e.GetPosition(null).Y;double rectWidth = Math.Abs(dx -x);double rectHeight = Math.Abs(dy -y);

SolidColorBrush brush= newSolidColorBrush(Colors.White);

rect.Width=rectWidth;

rect.Height=rectHeight;

rect.Fill=brush;

rect.Stroke=brush;

rect.StrokeThickness= 1;if (dx

{

Canvas.SetLeft(rect, dx);

Canvas.SetTop(rect, dy);

}else{

Canvas.SetLeft(rect, x);

Canvas.SetTop(rect, y);

}

CaptureCanvas.Children.Clear();

CaptureCanvas.Children.Add(rect);if(e.LeftButton ==MouseButtonState.Released)

{

CaptureCanvas.Children.Clear();//2. 获得当前截图区域

width = Math.Abs(e.GetPosition(null).X -x);

height= Math.Abs(e.GetPosition(null).Y -y);if(e.GetPosition(null).X >x)

{

CaptureScreen(x, y, width, height);

}else{

CaptureScreen(e.GetPosition(null).X, e.GetPosition(null).Y, width, height);

}

isMouseDown= false;

x= 0.0;

y= 0.0;this.Close();

}

}

}private void CaptureScreen(double x, double y, double width, doubleheight)

{int ix =Convert.ToInt32(x);int iy =Convert.ToInt32(y);int iw =Convert.ToInt32(width);int ih =Convert.ToInt32(height);

System.Drawing.Bitmap bitmap= newBitmap(iw, ih);using(System.Drawing.Graphics graphics =Graphics.FromImage(bitmap))

{

graphics.CopyFromScreen(ix, iy,0, 0, newSystem.Drawing.Size(iw, ih));

SaveFileDialog dialog= newSaveFileDialog();

dialog.Filter= "Png Files|*.png";if (dialog.ShowDialog() ==System.Windows.Forms.DialogResult.OK)

{

bitmap.Save(dialog.FileName, ImageFormat.Png);

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值