0

背景:私は、デスクトップアプリケーションでいくつかの微妙な調整を加えて、スキルを拡張するためのWeb開発者です。これはちょうど楽しみのためです。.NETで定義済みの図形をドラッグアンドドロップできるようにする

私は最小限のVisioのようなインターフェイスをいくつか構築しようとしています。

学校で私はかなりの.NETを行ったので、私はWinformsとGDIに精通しています。私はかなり簡単に画面上に描画することができ、それを書くことができます。

私が今探しているのは、ユーザーがキャンバスに「図形」を追加できるようにする方法です。 Visioがフローチャート形式でどのように動作するかを考えて、必要なシェイプを選択してドロップして調整します(幅、高さなど)。

私はこれを、長方形のような単純なGDIの形で行うことができますが、すべての種類の図形を設計するときに何を探すべきかについては迷っています。

もう一度私が考えることができるのは、データ入力の平行四辺形をキャンバスにドロップし、必要に応じて調整できるVisioです。私は、最小限の成功で、これまでに見てきたために何

が含まれています:

  • カスタムシェイプを。
  • カスタムコントロール。
  • 実行時にフォームデザイナーを有効にします。
  • ベクターベースの形状。

私は何を探しているべきですか?

+1

これを行うためにWinformsからの助けはほとんどありません。コントロールはウィンドウで、長方形です。コントロールをラインに接続する簡単な方法もありません。フォームのOnPaint()メソッドでe.Graphicsを使ってすべてを完了させることができますが、それはあなた自身のコードです。 WPFははるかに役立つことができる、それはウィンドウを使用しません。 ShapeクラスはUIElementから派生しています。 –

答えて

1

これにアプローチする最善の方法は、ユーザーコントロールを設けることです。 Shapeという基本的なユーザーコントロールを作成します。次に、線形など、必要な各図形に対して、Shapeから派生したLineShapeというクラスを作成します。さらに、IShapeというインターフェースを作成したいと思うかもしれません。それぞれのシェイプクラスにこのインターフェイスを実装させます。インタフェースには、すべてのシェイプに必要なメソッドが含まれている必要があります。たとえば、エンドポイントを定義するEndPoints()というメソッドをインターフェイスに配置し、ユーザーがドラッグしてシェイプのサイズを変更することができます。各シェイプは基本的なユーザーコントロールから派生するため、既にドラッグアンドドロップ機能を備えています。

各図形では、図形描画で図形を描画します。ペイントメソッドでは、Graphicsオブジェクトのハンドルを取得し、描画線、円、ポリゴンなどの基本的な処理を行うことができます。

"キャンバス"もユーザーコントロールである必要があります。キャンバスにドラッグアンドドロップされた各シェイプコントロールを保持するために、List<IShape>のリストを定義したいと思うでしょう。

ドラッグアンドドロップするには、Shapeコントロールでこれを有効にするだけで、他のすべてのシェイプから継承する必要があります。キャンバス上にドラッグしている間は、ドラッグされるデータのタイプがIShapeであることを確認したい場合は、DoDragDrop()を呼び出してキャンバスにシェイプをドロップできます。

ヘルプが必要な場合は、InterfacesUser Controlsをお読みください。

インターフェイスにプログラミングしようと常に覚えておいてください。そうすれば、他の開発者があなたのアプリケーションと一見するようなカスタムシェイプを書くことができるように、プログラムサポートプラグインを作成することさえできます。

+0

おかげさまで、来週の休暇は、この楽しい小さな自己学習実験を探すためのヒントを少なくとも私が持っているので、はるかに面白いはずです。 – jfrobishow

関連する問題