窗体CS文件里的代码
public BitmapSource GetBitmapSource(int x, int y, int width, int height)
{
//var scaleWidth = (screenWidth * 1.0) / SystemParameters.PrimaryScreenWidth;
//var scaleHeight = (screenHeight * 1.0) / SystemParameters.PrimaryScreenHeight;
var scaleWidth = 1.0;
var scaleHeight = 1.0;
var w = (int)(width * scaleWidth);
var h = (int)(height * scaleHeight);
var l = (int)(x * scaleWidth);
var t = (int)(y * scaleHeight);
using (var bm = new Bitmap(w, h, System.Drawing.Imaging.PixelFormat.Format32bppArgb))
{
using (var g = Graphics.FromImage(bm))
{
g.CopyFromScreen(l, t, 0, 0, bm.Size);
return Imaging.CreateBitmapSourceFromHBitmap(
bm.GetHbitmap(),
IntPtr.Zero,
Int32Rect.Empty,
BitmapSizeOptions.FromEmptyOptions());
}
}
}
private BitmapSource GetCapture()
{
int left = (int)this.Left; // 获取窗体在屏幕中的左边缘位置
int top = (int)this.Top; // 获取窗体在屏幕中的上边缘位置
int width = (int)this.Width; // 获取窗体的宽度
int height = (int)this.Height; // 获取窗体的高度
return GetBitmapSource(left, top, width, height) ;
}
public void SaveToPng(BitmapSource image, string fileName) {
using (var fs = System.IO.File.Create(fileName))
{
BitmapEncoder encoder = new PngBitmapEncoder();
encoder.Frames.Add(BitmapFrame.Create(image));
encoder.Save(fs);
}
}
public void ScreenCapture()
{
string path = "C:\\Users\\Administrator\\Documents\\123.png";
var source = GetCapture();
Clipboard.SetImage(source);
SaveToPng(source, path);
}
using materialtest.ViewModel;
using materialtest.Views;
using Microsoft.Win32;
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices;
using System.Runtime.InteropServices.ComTypes;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Interop;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using static System.Net.Mime.MediaTypeNames;
using static System.Windows.Forms.AxHost;
using Image = System.Windows.Controls.Image;
using Rectangle = System.Windows.Shapes.Rectangle;