c# 屏幕快照_C#屏幕截图

这个C#程序创建了一个窗口,允许用户通过鼠标选择截图区域。当鼠标按钮被按下并移动时,程序会画出一个矩形表示选定区域。在鼠标释放时,程序将捕获指定区域的屏幕快照,并保存为PNG文件。用户可以选择保存的位置。
摘要由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);

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值