public void DrawNotes() { if (NoteCanvas.Children.Count != NoteControls.Count) { throw new Exception(); } if (Part == null) { return; } for (var i = 0; i < Part.Notes.Count; i++) { var note = Part.Notes[i]; var next = Part.Notes.ElementAtOrDefault(i + 1); RenderNoteView noteControl; if (i < NoteControls.Count) { noteControl = NoteControls[i]; } else { noteControl = new RenderNoteView(this); NoteCanvas.Children.Add(noteControl); NoteControls.Add(noteControl); } MakeNote(noteControl, note.NoteNum, note.FinalPosition, note.FinalLength); noteControl.SetNote((RenderNote)note, (RenderNote)next); lastPosition = Math.Max(lastPosition, lastPosition + note.Length); } }
private void MakeNote(RenderNoteView noteControl, int noteNumber, long startTime, int duration) { var top = MusicMath.Current.GetNoteYPosition(noteNumber); var left = MusicMath.Current.GetNoteXPosition(startTime); noteControl.Width = duration * xScale; noteControl.Height = yScale; noteControl.SetValue(Canvas.TopProperty, top); noteControl.SetValue(Canvas.LeftProperty, left); }