var bitmap = new Bitmap((int)width, (int)height, PixelFormat.Format32bppArgb);
using (Graphics memoryGrahics = Graphics.FromImage(bitmap))
{
memoryGrahics.CopyFromScreen((int)left, (int)top, 0, 0, new Size((int)width, (int)height), CopyPixelOperation.SourceCopy);
}
return bitmap;
原因是windows系统对dpi的缩放
对dpi的解释:
解决方案:对页面的Height、Width、Left、Top进行处理
得到当前的dpi
Graphics g = Graphics.FromHwnd(IntPtr.Zero);
_Dpi = g.DpiX;
转换为正常的坐标
/// <summary>
/// 由于win10有缩放功能,所以要转为正常的坐标
/// </summary>
/// <param name="pixel">需要转换的值</param>
/// <returns>转换之后的值</returns>
private double ConvertToNomalCooridate(double pixel)
{
if(_Dpi == 0)
{
return pixel;
}
return pixel * _Dpi / 96;
}