F: Wurde die Geschwindigkeit der XML-Deserialisierung bei der Diagram.LoadFromXml in v5 verbessert?
A: Die Version 5 benutzt die DOM API und Version 4 hat lineare Serialisierung angewendet, so dass die XML-Serialisierung etwas langsamer in V5 ist, aber Sie werden es nur für eine große Anzahl von Items (Tausende) bemerken. Außerdem speichert die Version 5 eine einzelne Kopie von freigegebenen Knotenbildern, also die XML-Serialisierung ist in der neuen Version viel schneller mit der Anwendung von Bildern.
Wir haben einige Tests mit 400 Knoten und 400 Links gemacht:
- V4.3.1, ohne Bilder: die Datei wird in einer Sekunde geladen
- V5.0, ohne Bilder: die Datei wird in einer Sekunde geladen
- V4.3.1, mit 10 Bildern: die Datei wird in 12 Sekunden geladen
- V5.0, mit 10 Bildern: die Datei wird in 2 Sekunden geladen
Jedes Bild von den letzten Tests wurde 40 Knoten zugewiesen. In diesem Fall ist die Geschwindigkeit in Version 5 viel schneller, weil die Bytes von freigegebenen Bildern nur einmal kodiert und gespeichert werden; während bei der Version 4 eine einzelne Kopie für jeden Knoten gespeichert wird, und anschließend 400 Bildkopien beim Laden dekodiert werden.
Zurück zum Anfang
F: Kann Diagram.LoadFromXml XML Strings lesen, die mit der XmlWriter Klasse von vorherigen Versionen erstellt wurden?
A: Das alte XML-Format wird noch für Lesen unterstützt; zurzeit müssen Sie die Methode LoadFromString zum Laden eines XML-Strings benutzen.
Zurück zum Anfang
F: Gibt es in v5 ein Darstellungsunterschied zwischen der überladenen LoadFromXml, die das Diagramm von einem XMLDocument ladet und derjenigen, die ein String nimmt?
A: Die Letzte ruft die Vorige nach dem Erstellen eines XmlDocument-Objekts von dem Stringinhalt auf.
Zurück zum Anfang
F: Ist es möglich, ein Diagram als Bitmap-Datei zu konvertieren?
A: Rufen Sie die Methode Diagram.CreateImage und dann Image.Save auf.
Zurück zum Anfang
F: Ich versuche, ein individuelles Icon zum Drag&Drop zu erstellen, das beim Ziehen der Shape auf dem Bildschirm angezeigt wird. Ist es möglich, eine flowChart-Shape in ein Bild bei dem Fliegen umzuwandeln?
A: Erstellen Sie ein Graphikobjekt mit Graphics.FromImage. Zum Zeichnen einer Shape auf der Graphics-Instanz erstellen Sie einen temporären Knoten, wählen Sie seine Form, und dann rufen Sie die Methode ShapeNode.Draw auf. Eine ähnliche Methode ist im Beispielprojekt 'Flowcharter' enthalten, in dem die Icons in einer Listbox Flowchart.NET Shapes darstellen.
Zurück zum Anfang
F: Wie kann ich ein Diagramm als Emf-Datei exportieren?
A: Benutzen Sie den folgenden Code:
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 und GdiGraphics werden in dem MindFusion.Drawing Namespace definiert.
Zurück zum Anfang
F: Kann ich eine Auswahl von Items in eine Datei speichern?
A: Mit den Methoden CopySelection und PasteSelection können Sie die selektierten Items in eine zweite Diagram-Instanz kopieren, und sie mit der Methode Diagram.SaveToFile in eine Datei speichern.
Zurück zum Anfang
F: Kann FlowChart.NET mein Datenbankschema lesen und ein ER-Diagramm hierfür erstellen?
A: Nein. Sie müssen das Schema mit ADO.NET lesen und ein Diagramm per Programmierung mittels der Methoden CreateTableNode und CreateDiagramLink erzeugen.
Zurück zum Anfang
F: Ich habe eine SQL-Tabelle mit einigen Einträgen, die Informationen über Zustand und Verbindungen in verschiedenen Spalten enthalten. Ich habe schon die Knoten importiert. Jetzt möchte ich die Verbindungen einrichten. Können Sie mir einige Hinweise darüber geben, wie ich vorgehen soll?
A: Zum Erstellen der Verbindungen ordnen Sie die Knoten-ID von der Datenbank zu der Eigenschaft ShapeNode.Tag beim Erstellen der Knoten zu. Führen Sie eine zweite Schleife für die Verbindungssätze, und für jede entsprechende Knoten-ID aus, rufen Sie CreateDiagramLink(node, Diagram.FindNode (relatedID)) auf. Wenn Sie die Tags schon zum Speichern von anderen Informationen benutzen, speichern Sie die Relationen in einer Hashtabelle.
Zum Zusammenstellen des Diagramms können Sie einige der Klassen der Layout-Algorithmen anwenden, zum Beispiel LayeredLayout.
Zurück zum Anfang
|