Визуальный C# Визуализирует холст с дочерними элементами, не показывая его пользователю

#c# #wpf #canvas #render

Вопрос:

Я создаю программу, в которой вы можете рисовать на холсте с помощью прямоугольников (дочерние элементы холста). Я хочу реализовать возможность экспорта изображения в формат png. Моя проблема в том, что я хочу, чтобы пользователь мог установить разрешение выходного изображения. Я попытался создать новый холст в коде c# нужного размера, и я просто добавляю все прямоугольники на этот холст. Когда я пытаюсь отрисовывать его, выходной файл имеет правильный размер, но изображение полностью черное (я установил черный фон холста). Моя теория заключается в том, что без отображения холста пользователю он не может отобразить все элементы изображения. Я также попытался изменить зиндекс прямоугольников, но ничего не получилось. Вот мой код для создания и визуализации холста:

 public void RenderToPNG(int heightwidth, string destinationfilename){
    Canvas RenderCanvas = new Canvas();
    RenderCanvas.Height = heightwidth;
    RenderCanvas.Width = heightwidth;
    RenderCanvas.Background = Brushes.Black;
  
    // Here code to copy all the elements to RenderCanvas

    // Render Canvas
    RenderTargetBitmap rtb = new RenderTargetBitmap(heightwidth, heightwidth, 96, 96, 
    PixelFormats.Default);
    rtb.Render(RenderCanvas);

    BitmapEncoder pngEncoder = new PngBitmapEncoder();
    pngEncoder.Frames.Add(BitmapFrame.Create(rtb));
    MemoryStream ms = new MemoryStream();
    pngEncoder.Save(ms);
    ms.Close();
    File.WriteAllBytes(destinationfilename, ms.ToArray());
}
 

Есть ли способ отобразить холст вместе с его дочерними элементами, не отображая его в окне или что-то в этом роде?
Или есть лучший способ решить мою проблему, позволив пользователю регулировать разрешение выходного файла?
Любая помощь будет признательна! Я искал решение своей проблемы, но не мог найти ничего, что помогло бы.