Я создал звуковой спектр частот и для анимации линий я использовал CanvasAnimatedControl, но анимация линий идет в кадре.
Событие Code of 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();
}
Я загрузил проект по этой ссылке .
Как можно улучшить анимацию линий, чтобы избежать у вас есть снимки?
Заранее спасибо.
ОБНОВЛЕНИЕ
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)));
}
Я пытался изменить, как вы сказали, но я не смог получить хороший результат, потому что с обновлением Событие меняется только один раз и возвращает только одну точку два. Я загрузил файл здесь . Как я могу измениться к лучшему?
Всегда спасибо.