2015-10-22 5 views
1

Я хочу сохранить холст на диске в виде PNG-изображения.Извлечь скрытый холст, не показывая его?

Это работает, когда полотно полностью показано с помощью этого кода:

RenderTargetBitmap rtb = new RenderTargetBitmap(794, 1122, 96d, 96d, System.Windows.Media.PixelFormats.Default); 
rtb.Render(canvas); 

Но детали, которые не показаны в то время не отображаются. Когда визуальное изображение вообще не отображается, ничего не отображается.

Затем как сохранить Canvas в коде на диск, не показывая его?

+1

Помогает ли это? http://stackoverflow.com/a/14119523/401828 – heltonbiker

+0

Нет, это не так. Это тот же самый код, который я использую в настоящее время. UpdateLayout() не исправил это либо –

+0

Только решение, которое я могу придумать, - это положить мой холст в FlowDocument и сохранить его. –

ответ

0

Хорошо, я исправил его с помощью heltonbiker & Clemens.

var size = new Size(794, 122); 
Document.Measure(size); 
Document.Arrange(new Rect(size)); 

Document.UpdateLayout(); 

RenderTargetBitmap rtb = new RenderTargetBitmap(794, 1122, 96d, 96d, System.Windows.Media.PixelFormats.Default); 
rtb.Render(Document); 

Но когда я сохраняю свой холст на диске, у него был черный фон. Я решил это, добавив Rectangle к моему XAML внутри Canvas.

Смежные вопросы