我的问题是 Int32Rect 点与我画布中的点不同。我尝试按照建议使用 dpi 作为其他问题的解决方案,但我不知道如何使用它。
private void bttnExportFB_Click(object sender, RoutedEventArgs e)
{
RenderTargetBitmap rtb = new RenderTargetBitmap((int)mainCanvas.ActualWidth,
(int)mainCanvas.ActualHeight, 96d, 96d, System.Windows.Media.PixelFormats.Default);
rtb.Render(mainCanvas);
CroppedBitmap crop = new CroppedBitmap(rtb, new Int32Rect((int)(173 ), (int)(360), (int)(353 ), (int)(540 )));
BitmapEncoder pngEncoder = new PngBitmapEncoder();
pngEncoder.Frames.Add(BitmapFrame.Create(crop));
using (var fs = System.IO.File.OpenWrite("logo.bmp"))
{
pngEncoder.Save(fs);
}
}
-update- 在画布上,由 inteRect32 的位置创建的矩形在 rtb 处具有不同的区域。