【发布时间】:2020-01-11 08:51:39
【问题描述】:
我创建了一个音频频谱,并为我使用 CanvasAnimatedControl 的线条动画制作了线条动画。
Draw 事件代码:
private void OnDraw(Microsoft.Graphics.Canvas.UI.Xaml.ICanvasAnimatedControl
sender, Microsoft.Graphics.Canvas.UI.Xaml.CanvasAnimatedDrawEventArgs args)
{
double height = sender.Size.Height;
double width = sender.Size.Width;
for (int a = 0; a < nBands; a++)
{
_data.Add(new List<double>());
for (int i = 0; i < DataPointsPerFrame; i++)
{
_lastValue = Math.Max(0d, Math.Min(1d, _lastValue + (list[a] * 0.00001)));
_data[a].Add(list[a]);
}
}
for (int a = 0; a < nBands; a++)
{
double total = 0;
double range = 0;
double widthBand = (width - 120 - ((nBands - 1) * 1)) / nBands;
var padding = 60 + (a * widthBand) + (a * 1);
for (int start = 0; start < _data[a].Count; start += ColumnAvgDataRange)
{
total = 0;
range = Math.Min(ColumnAvgDataRange, _data[a].Count - start);
for (int i = start; i < start + range; i++)
{
total += _data[a][i];
}
}
total = total * 0.0008;
var point1 = new Vector2((float)padding, (float)height);
var point2 = new Vector2((float)padding, (float)height - (float)(height * (total / range)));
args.DrawingSession.DrawLine(point1, point2, Colors.Green, (float)widthBand);
}
canvasBands.Invalidate();
}
我把项目上传到这个link。
如何改善线条的动画以避免出现镜头?
提前致谢。
更新
private void canvasBands_Update(Microsoft.Graphics.Canvas.UI.Xaml.ICanvasAnimatedControl sender,
Microsoft.Graphics.Canvas.UI.Xaml.CanvasAnimatedUpdateEventArgs args)
{
double height = sender.Size.Height;
double width = sender.Size.Width;
point2 = new Vector2((float)padding, (float)height - (float)(height * (total / range)));
}
我尝试按照您所说的进行修改,但我无法获得良好的结果,因为更新事件仅更改一次并且仅返回一点二。我上传了文件here。 我怎样才能变得更好?
永远感谢。
【问题讨论】:
-
我们的团队成员已经回复了类似的案例here,请检查是否有帮助。