Como usar o Silverlight 4 Beta Print Preview?
-
21-09-2019 - |
Pergunta
Um dos recursos do Silverlight 4 listados em muitos documentos do PDC é a visualização de impressão.
Eu procurei exemplos sobre como usar isso e não encontrei nada até agora. Alguém já fez isso funcionando? Você pode me dar algumas dicas sobre como implementar um aplicativo da web simples com a visualização de impressão.
Solução 3
Penso que pela falta de respostas e pelo fato de que, como Hurricanepkt apontou em sua resposta, Tim Heuer e outros falam sobre uma impressão virtual que, se dispensando a mesma coisa na tela, poderia ser construída com bastante facilidade em sua própria funcionalidade de visualização de impressão sob medida que o A visualização de impressão listada em algumas listas é realmente as pessoas interpretando mal o que os documentos de impressão virtual realmente são.
Outras dicas
Não vi a pré -visualização de impressão como nenhum deles, mas o suporte real de impressão no qual você pode controlar quais controles são impressos e eventos com base no processo de impressão.
Depois de procurar um tempo, encontrei uma maneira de fazer isso combinando alguns recursos que encontrei em outros projetos, mas eles o usaram para manipulação de imagens. Eu tentei com impressão e parece funcionar bem.
Aqui, como funciona: Obtenha o contêiner base para o conteúdo da impressão convertido em um bitmap usando o writeablebitmap, aqui vou usar uma tela:
WriteableBitmap wb = new WriteableBitmap(this.canvas1, null);
Use este bitmap como fonte para um controle de imagem (pode estar dentro de um scrollViewer, o que é ainda melhor).
this.imagePreview.Height = wb.PixelHeight;
this.imagePreview.Width = wb.PixelWidth;
this.imagePreview.Source = wb;
Defina unidades básicas de escala (usadas 1 % neste caso):
Point scale = new Point();
scale.X = imagePreview.Width/100d;
scale.Y = imagePreview.Height/100d;
Em seguida, ajuste a escala usando um controle deslizante (opcional)
private void vSlider_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
{
imagePreview.Height = scale.Y * vSlider.Value;
imagePreview.Width = scale.X * vSlider.Value;
}