WinFormsの共通の問題集(2)のための初心者MindFusion.Diagramming

一般的なユーザーパターンシーケンスと輸出の問題をまとめこの記事では、私は〜あなたの助けを期待します

Q:Diagram.LoadFromXmlでV5は、XMLデシリアライズの速度が改善されているかどうか?

:使用DOM APIバージョン5とバージョン4の直鎖配列を使用して、およびV5遅い速度でのしたがって、XMLシリアル化していますが、それが唯一のアイテム(数千人)の数が多いことがわかります。画像を使用する場合は、新しいバージョンのXMLシリアル化速度がはるかに高速であるので、また、バージョン5のシリアル化は、共有ノード画像の単一のコピーを保存します。我々はいくつかのテストに400のノードと400個のリンクを行っています。

V4.3.1、何のイメージません:ファイル秒をロードします

V5.0、なし画像:秒をロードするファイル

備えV4.3.1、10枚の画像:ファイルのロード12秒

V5.0、画像10:ロードファイルの2秒

最後のテストの各ピクチャは、40個のノードに割り当てられています。この場合、より良好な速度バージョン5、共有画像バイトが符号化され、一旦記憶されているため、ノードごとに保存されたバージョン4つの別々のコピー、およびその後のコピー復号画像400ロードされたとき。

Q:Diagram.LoadFromXmlは、XML文字列のXmlWriterクラスの以前のバージョンを使用して読み取ることができ、それを作成しましたか?

:古いXML形式は、まだ読んでサポートされています。実際には、あなたはXML文字列を読み込むためにLoadFromStringメソッドを使用する必要があります。

Q:V5は、文書をリロードLoadFromXml取得し、取得オーバーロードされた文字列の間の性能差があるかどうか?

:文字列の内容からXmlDocumentオブジェクトを作成した後、元の呼び出し後者。

Q:それはビットマップファイルとしてチャートを変換することは可能ですか?

:Diagram.CreateImageメソッドを呼び出し、その後、Image.Saveメソッドを呼び出します。

Q:私は、カスタムのドラッグを作成して、画面上に図形をドラッグしながら表示するアイコンをドロップしようとしています。画像の中に移動する形状をフローチャートに方法はありませんか?

A:使用Graphics.FromImageは、グラフィックオブジェクトを作成します。グラフィックインスタンス上の図形を描画するには、一時的なノードを作成し、その形状を設定し、ShapeNode.Drawメソッドを呼び出します。FlowCharterプロジェクトサンプルは、アイコンがFlowchart.NETリストボックス形状を表す同様の方法を示しています。

Q:EMFファイルにグラフをエクスポートする方法?

:次のコードを使用します。

使用(のFileStreamストリーム=新しいFileStreamを(
@ "C:\ temp.wmf"、FileMode.Create))
{
グラフィックG = createGraphicsの()。
IntPtrのhDC = g.GetHdc()。
メタファイルメタファイル=新しいメタファイル(ストリーム、HDC);
g.ReleaseHdc(HDC)。
g.Dispose(); IGraphics gMeta =新しいGdiGraphics(
Graphics.FromImage(メタファイル));

diagram.Draw(gMeta、新しいRenderOptions()、
diagram.Bounds、偽);

gMeta.Dispose();

metafile.Dispose();
}
IGraphicsとGdiGraphicsはMindFusion.Drawing名前空間を定義しました。

Q:私は、ファイルそれに選択した項目を保存することはできますか?

:使用CopySelectionとPasteSelection方法コピー2番目の図のインスタンスに選択した項目、およびファイルに保存するDiagram.SaveToFileメソッドを呼び出します。

Q:FlowChart.NETは私のデータベーススキーマを読んで、あなたのためのER図を生成することができますか?

:いいえ あなたは、ADO.NETによるアーキテクチャを読んで、プログラムでグラフを生成するCreateTableNodeとCreateDiagramLinkの方法を使用する必要があります。

Q:私はいくつかのステータスと接続情報のエントリが含まれているSQLテーブルは、複数の列が含まれています。私は、ノードをインポートしました。今私は、接続を整理したいと思います。あなたは私があなたを選ぶべき道のヒントをいくつか持っていますか?

A:あなたはノードを作成するときにShapeNode.Tagプロパティにデータベース・ノードのIDを割り当て、接続を作成します。リンクレコードに第二の実行サイクルは、関連する各ノードのノードIDのために、CreateDiagramLink(ノード、Diagram.FindNode(relatedID))を呼び出します。すでに追加情報を格納するためにラベルを使用している場合は、関係がハッシュテーブルに格納してください。いくつかのタイプ、例えばLayeredLayoutを使用するチャート、レイアウトアルゴリズムを配置します。


問題は、更新を持続します。
これは〜お読みいただきありがとうございました、この記事を締結します

おすすめ

転載: blog.51cto.com/14499080/2431408