0

有没有提供基本选择机制的类?例如:

想象一下,我有 WAVE 文件和用 C# 编写的简单 WAV 编辑器。现在我可以将这个波形文件以图形表示形式显示为波形。在主菜单中,我可以单击 Edit -> Select All,这将选择我的所有样本。

 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

这门课你已经写了多少?事实上,我看到你描述

  1. 一组两个数字(可能是长整数?)来定义时间范围或样本选择。
  2. 方便选择所有时间/样本的能力。
  3. 时间范围的集合。
  4. “命中测试”给定时间/样本的选择能力。

如果您有用于波形数据的 API/POCO,则可以在其上实现通用或访问者模式以获得所需的功能。我不确定我是否知道 .net 框架中的通用“样本范围”项目。

但是,作为示例,您可以查看构建通用范围类中的代码示例,看看您是否可以使用它。我不完全确定我是否同意他的一些运算符重载,但这可能是你开始的地方。

于 2012-07-16T15:08:48.527 回答
1

我无法找到任何与您描述的内容模糊匹配的“官方”(内置于框架中)类,但我发现这篇文章应该对您有所帮助 - 我看不到与您的等价物InvertSelection()方法,但除此之外它看起来很有希望。

编辑:经过进一步搜索,我发现 Jon Skeet 在他的 C# 书中有一个关于创建通用范围类的章节 - 在他的网站上查看它的摘录

于 2012-07-16T14:58:01.677 回答
1

我不知道框架中有什么只做这个的。这似乎高度依赖于您希望如何跟踪选择(Selected属性、索引范围)。

于 2012-07-16T15:00:11.170 回答