0

私は現在、チャートアプリケーションを書いています。Zedgraph を使用して 2D プロットを表示しています。私のアプリケーションでは、約 8 種類のグラフを表示する必要があり、それぞれがわずかに異なる機能を提供する必要があります。

ここでの問題は、ほとんどのクラスが使用する「基本」機能を持っていることもあれば、一部のクラスが使用する「追加」機能を持っていることもあれば、これらのミックスマッシュであることもあります。これに加えて、グラフに表示されるデータもばらばらで、視覚的な外観もバラバラです。

1 つ以上のチャートに適用できる次の機能を検討してください。

  • グラフを自動的にスクロールする機能 (ライブ データを使用)
  • グラフを水平方向にズームする機能
  • グラフを垂直方向にズームする機能
  • ユーザーがチャート内のポイントを編集する機能
  • ユーザーがデータの領域を選択する機能
  • ユーザーがチャートの目盛りを変更する機能
  • グラフを「ズームして合わせる」機能
  • 1 つ、2 つ、3 つ、または 4 つの垂直軸を持つ能力
  • チャートオーバーレイを表示する機能

これらをすべてまとめると、一部の機能はすべてのチャートに適用され、一部はチャートのサブセットに適用され、一部は個々のチャートに適用されます。現在、実装する機能の階層はありません。

私の現在の実装では、(はっきりと見えるグローバル機能を提供するために) 基本クラスを使用しており、この基本クラスから 2 つの「フォーク」がありますが、個々のクラスにばらばらの機能を実装する方法に行き詰まっています。複数のクラスから継承する必要がある場合があるため、抽象クラスは使用できませんが、コードはまったく同じであるため、インターフェイスを提供したくありません。

それで、私はここで何をしますか?拡張メソッドを使用して特定の機能を有効にすることはできますか?

4

1 に答える 1

1

機能の非常に多くの側面があることを考えると、それらはかなり独立しているように見えます (特定のチャートには、機能のサブセット、またはそれに近いものがある可能性があります)。これはアプリケーションによって時間の経過とともに変化する可能性があるため、グラフごとに実装するのではなく、これを一般化するために前もって時間を費やすことをお勧めします。

単純に、汎用の "Chart" ユーザー コントロールを作成し、すべての機能を実装します。次に、機能ごとにブール値のプロパティを指定して有効/無効にします。(つまりIsHorizontalScrollableIsVerticalScrollable、 ) 次にIsSelectionEnabledArePointsEditableフォームの実際の各インスタンスは、より一般的なフォームの適切なプロパティとその実際のデータを設定する必要があります。

于 2012-10-31T15:37:12.973 に答える