#region 控件保存为图片--放大图
/// <summary>
/// 控件保存为图片--可处理放大图
/// </summary>
/// <param name="element"></param>
/// <returns></returns>
public static Bitmap CreateNotRanderElementScreenshot(FrameworkElement element, double MatrixTransform=1)
{
var wantRanderSize = new System.Windows.Size(Math.Truncate(element.ActualWidth * MatrixTransform), Math.Truncate(element.ActualHeight * MatrixTransform));
element.Measure(wantRanderSize);
element.SnapsToDevicePixels = true;
element.Arrange(new Rect(new System.Windows.Point(0, 0), wantRanderSize));
return CreateElementScreenshot(element, Convert.ToInt32(Math.Truncate(element.ActualWidth * MatrixTransform)), Convert.ToInt32(Math.Truncate(element.ActualHeight * MatrixTransform)));
}
private static Bitmap CreateElementScreenshot(Visual visual, int sWidth, int sHeight)
{
RenderTargetBitmap bmp = new RenderTargetBitmap(sWidth, sHeight, 96, 96, PixelFormats.Default);
//RenderTargetBitmap bmp = new RenderTargetBitmap((int)RenderSize.Width, (int)RenderSize.Height, 96, 96, PixelFormats.Default);
bmp.Render(visual);
Bitmap bitmap = new Bitmap(bmp.PixelWidth, bmp.PixelHeight, System.Drawing.Imaging.PixelFormat.Format32bppArgb);
BitmapData data = bitmap.LockBits(new System.Drawing.Rectangle(System.Drawing.Point.Empty, bitmap.Size), ImageLockMode.WriteOnly,
System.Drawing.Imaging.PixelFormat.Format32bppArgb);
bmp.CopyPixels(Int32Rect.Empty, data.Scan0, data.Height * data.Stride, data.Stride);
bitmap.UnlockBits(data);
//bitmap.Save(@"D:\TestCode\WpfDragMoveTest\SerialPortPrint\bin\Debug\5555.png", ImageFormat.Png);
return bitmap;
}
#endregion