我在滚动查看器内的画布上绘制了一个波形(音频文件的左声道)。我希望画布(以波形为内容)“移动”滚动查看器的可见窗口。这样做的目的是能够看到波形在屏幕上移动,即使正在绘制的音频文件可能长达几分钟,也只能看到指定时间的窗口(也许是一分钟剪辑)。我希望它绑定到时钟,这样当时钟开始时,波形开始移动(或者,滚动查看器的水平偏移提前)。我使用 Naudio 绘制波形,使用 C# 和 WPF。绘制的波形是每 100 毫秒采样一次的文件中所有字节的图形。如何保持时钟和视窗同步?任何帮助或开始的地方将不胜感激,因为这是我第一个使用这种东西的项目。谢谢。
问问题
510 次
1 回答
1
如果我理解正确,那么您可以Canvas
根据时间以编程方式滚动内容。下面我将展示一个示例算法。
您可以像这样以编程方式滚动:
scrollViewer.ScrollToHorizontalOffset(scrollViewer.HorizontalOffset + 5); // Horizontal scroll through 5 units
使用计时器可能如下所示:
int InitInterval = Interval; // init interval
System.Timers.Timer myTimer = new System.Timers.Timer();
myTimer.Elapsed += new ElapsedEventHandler(ScrollCanvas);
// set the interval
if (InitInterval > 0)
{
myTimer.Interval = InitInterval;
}
// turn on timer
myTimer.Enabled = true;
上市ScrollCanvas():
private void ScrollCanvas(object source, ElapsedEventArgs e)
{
// some code
// ...
// implementing scrolling
Dispatcher.BeginInvoke(new ThreadStart(delegate
{
scrollViewer.ScrollToHorizontalOffset(scrollViewer.HorizontalOffset + 5);
}));
}
于 2013-07-30T06:39:28.317 回答