После того как я искал какое-то время, я нашел способ сделать это, объединив некоторые функции, которые я нашел в других проектах, но они использовали его для обработки изображений. Я пробовал с печатью, и, похоже, все нормально.
Вот как это работает: Получить базовый контейнер для содержимого печати конвертированы в растровое изображение с помощью WriteableBitmap, здесь я буду использовать Canvas:
WriteableBitmap wb = new WriteableBitmap(this.canvas1, null);
Используйте этот растровый как источник для изображения (может быть внутри ScrollViewer, что еще лучше).
this.imagePreview.Height = wb.PixelHeight;
this.imagePreview.Width = wb.PixelWidth;
this.imagePreview.Source = wb;
Набор масштабирования базовых блоков (используется 1 процент в данном случае):
Point scale = new Point();
scale.X = imagePreview.Width/100d;
scale.Y = imagePreview.Height/100d;
Затем установите масштабирование с помощью ползунка (необязательно)
private void vSlider_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
{
imagePreview.Height = scale.Y * vSlider.Value;
imagePreview.Width = scale.X * vSlider.Value;
}
http://silverlight.net/getstarted/silverlight-4-beta/рассказывает о просмотре виртуальной печати, который может или не может быть распечатан, но http://blog.stormideas.com/archive/2009/11/20/silverlight-4-beta-released- did-you-get-what-you.aspx, а другие прямо говорят о предварительном просмотре функциональность. – colethecoder
виртуальный вид печати позволяет создавать элементы управления «на лету», фактически не отображая их на экране ... – MarkKGreenway
Ну, я должен также упомянуть, что Тим Хейер показывает, как создать виртуальную печать http://www.silverlight.net/learn/ видео/silverlight-4-beta-videos/printing-api-basics/ – MarkKGreenway