2012-04-18 7 views
7

Estoy trabajando en el Componente de gráfico WPF. Necesito implementar una característica para mostrar Chart Visual a un metarchivo (WMF/EMF), para que el usuario pueda pegar ese archivo en cualquier producto de oficina como Word o Powerpoint y pueda cambiar el tamaño del archivo sin afectar la calidad de la imagen renderizada.Renderizando un archivo WPF Visual a un archivo WMF/EMF

He visto algunas preguntas similares aquí, pero ninguna de ellas cede a ninguna respuesta útil.

Aprendí de algunas publicaciones que WPF no es compatible con la representación visual a EMF/WMF debido a problemas de seguridad, pero debe haber algún reemplazo que permita la interacción como EMF/WMF para aplicaciones basadas en Winform y la oficina traje o ms-pintura.

Cualquier sugerencia para seguir adelante es bienvenida, gracias.

Respuesta

3

Sí impresión XPS está bien, pero que quería entrar en metarchivo, ¿no? Acabo de ver este que puede ayudar a buscar en conjunto muy inferior de enlaces

Does WPF support reading/writing WMF/EMF files natively?

se parece a estos 2 enlaces pueden ser de interés

http://softronix.com/download/WpfToWmfClipboard.zip

http://xamltoys.codeplex.com/

+0

Agradezco su respuesta Sacha, XamlToys puede ser una buena solución, pero con ellos toma mucho tiempo renderizar un CEM, aunque parece la única solución a partir de ahora. – Pank

+0

EXCELENTE !!!!!!! Muchas gracias ! –

1

Creo que lo que desea hacer es utilizar la clase RenderTargetBitmap para obtener primero una Imagen de su control y luego convertirla a un EMF.

De hecho esta entrada del blog le da un muy buen punto de partida: http://www.switchonthecode.com/tutorials/wpf-tutorial-getting-from-wpf-to-a-metafile-and-onto-the-clipboard

Dicho esto, ya se está trabajando con un archivo BMP (que es lo que se obtiene de WPF) la imagen resultante no se basaría vectorial incluso cuando logra guardarlo como archivo EMF.

Anway espero que le ayuda de alguna manera

+0

gracias sacha, sé por la forma en que sugirió, no me ayudará a escalar el EMF resultante en ms word o powerpoint, ya que aún perderá la calidad de los gráficos en la escala. ¿Conoces alguna otra manera por la cual puedo renderizar el visual a fem directamente o usando cualquier otro formato de intermidiet? – Pank

+0

Como sé, podemos representar visual a xps, que es un formato basado en vectores, y ya lo utilicé para implementar la funcionalidad de impresión, pero el portapapeles o ms word no están equipados con la funcionalidad para aceptar xps como formato de entrada y representarlo. – Pank

1

tengo una solución para esto, He usado XamlToys para convertir un visual a Emf siguiendo los pasos para lograr que: Obtenga el elemento de marco. Convertirlo a XPS Luego convertirlo a XamlStream Y luego convertirlo a EMF usando XamlToys. Funciona bien y proporciona una Emf de alta calidad.

Pruébalo, y avísame si te sirve de ayuda.

+0

Pank, gracias por su resumen del 4 de mayo. Lo he intentado. Una nota para aquellos que quieran usar la solución: XamlToys no ha implementado Visual3D (GetDrawingFromXaml() arroja la excepción 'Visual3D no implementado').Por lo tanto, XamlToys no es una solución si se usa Visual3D. – Falo

Cuestiones relacionadas