1

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

4

0 に答える 0