0

基本的な選択メカニズムを提供するクラスはありますか? 例えば:

C# で記述された WAVE ファイルと単純な WAV エディターがあるとします。これで、このウェーブ ファイルを波形としてグラフィカルに表示できます。メイン メニューで [編集] -> [すべて選択] をクリックすると、すべてのサンプルが選択されます。

 MySelector ms = new MySelector (0, numOfSamples-1);
 ms.SelectAll;

もちろん、範囲ブロックを選択する必要があります。

ms.Select (from, to);

または逆にすることもできます:

ms.InvertSelection ();

複数選択:

ms.AppendSelection (from ,to);

選択したサンプルに関する情報を取得します。

for (int i=0; i< ms.Size; i++)
if (ms.SelectedAt (i)) DoSomeLogic ();

それで、そのクラスはすでに書かれていますか、それとも明日やるべきですか :O ?

どうも。

4

3 に答える 3

1

これだけを行うフレームワークは何も知りません。Selected選択を追跡する方法(プロパティ、インデックスの範囲)に大きく依存するもののようです。

于 2012-07-16T15:00:11.170 に答える
1

このクラスのどのくらいをすでに書きましたか? そのまま、あなたが説明していることがわかります

  1. 時間範囲またはサンプルの選択を定義するための 2 つの数値 (おそらく長整数型?) のセット。
  2. 便宜上、すべての時間/サンプルを選択する機能。
  3. 時間範囲のコレクション。
  4. 特定の時間/サンプルの選択性を「ヒット テスト」する機能。

Wave データ用の API/POCO がある場合は、必要な機能を得るためにジェネリック パターンまたはビジター パターンを実装することができます。.net フレームワーク内の汎用の「サンプル範囲」アイテムを知っているかどうかはわかりません。

ただし、例として、Generic Range クラスの構築のコード サンプルを見て、それを使用できるかどうかを確認することができます。彼のオペレーターの過負荷の一部に同意するかどうかは完全にはわかりませんが、それはあなたが始める場所かもしれません.

于 2012-07-16T15:08:48.527 に答える
1

あなたが説明したものと漠然と一致する「公式」(フレームワークに組み込まれている)クラスを見つけることができませんでしたが、途中で役立つはずのこの記事を見つけました-あなたのに相当するものは見つかりませんInvertSelection()メソッドですが、それ以外は有望に見えます。

編集: さらに検索すると、Jon Skeet の著書 C# でジェネリック範囲クラスの作成に関する章が詳細に記載されていることがわかりました。彼のサイトの抜粋を参照してください

于 2012-07-16T14:58:01.677 に答える