P: ¿Se ha mejorado la velocidad deserialización XML en Diagram.LoadFromXml en v5?
R: La versión 5 utiliza DOM API y la versión 4 utiliza serialización lineal, por lo que la serialización XML es un poco más lenta en V5, pero se dará cuenta de que sólo con un gran número de elementos (en miles). Además, la versión 5 serializa guardada una sóla copia de las imágenes de nodos compartidos, asá que la serialización XML para la nueva versión es mucho más rápida cuando se utilizan imágenes. Hemos hecho algunas pruebas con 400 nodos y 400 enlaces:
P: ¿Puede Diagram.LoadFromXml leer cadenas XML creadas con clase XmlWriter de la versión anterior?
R: El formato XML antiguo aún se puede utilizar para la lectura, en realidad se debe utilizar el método LoadFromString para cargar una cadena XML.
P: En v5, ¿hay una diferencia de rendimiento entre la sobrecarga LoadFromXML que tiene un documento contra el que toma una cadena?
R: El último llama al anterior después de crear un objeto XmlDocument desde el contenido de la cadena.
P: ¿Es posible convertir un diagrama en un archivo de mapa de bits?
R: Llame al método Diagram.CreateImage y luego el método Image.Save.
P: Estoy intentando crear un ícono de arrastrar&soltar personalizado para mostrar cuando se arrastra la forma por la pantalla. ¿Hay alguna forma de convertir una forma flowChart en una imagen sobre la marcha?
R: Cree un objeto gráfico utilizando Graphics.FromImage. Para dibujar una forma en la instancia de Graphics, crear un nodo temporal, establezca su forma, y luego llame al método ShapeNode.Draw. Un método similar se muestra en el proyecto de ejemplo Flowcharter donde los iconos en un cuadro de lista representan formas Flowchart.NET.
P: ¿Cómo puedo exportar un diagrama a un archivo emf?
R: Use el siguiente código:
using (FileStream stream = new FileStream( @"C:\temp.wmf", FileMode.Create)) { Graphics g = CreateGraphics(); IntPtr hDC = g.GetHdc(); Metafile metafile = new Metafile(stream, hDC); g.ReleaseHdc(hDC); g.Dispose(); IGraphics gMeta = new GdiGraphics( Graphics.FromImage(metafile)); diagram.Draw(gMeta, new RenderOptions(), diagram.Bounds, false); gMeta.Dispose(); metafile.Dispose(); }IGraphics y GdiGraphics están definidos en el nombre de espacio MindFusion.Drawing.