私の問題は、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 で異なる領域を持ちます。