protected override void OnRender(DrawingContext drawingContext) { int firstTrack = (int)(OffsetY / TrackHeight); int alt = firstTrack; double top = TrackHeight * firstTrack - OffsetY; while (top < _size.Height) { drawingContext.DrawRectangle( MusicMath.IsBlackKey(alt) ? ThemeManager.BlackKeyBrushNormal : MusicMath.IsCenterKey(alt) ? ThemeManager.CenterKeyBrushNormal : ThemeManager.WhiteKeyBrushNormal, null, new Rect(0, (int)top, _size.Width, TrackHeight)); if (TrackHeight >= 12) { FormattedText text = new FormattedText( MusicMath.GetNoteString(UIConstants.MaxNoteNum - alt - 1), System.Threading.Thread.CurrentThread.CurrentUICulture, FlowDirection.LeftToRight, SystemFonts.CaptionFontFamily.GetTypefaces().First(), 12, MusicMath.IsBlackKey(alt) ? ThemeManager.BlackKeyNameBrushNormal : MusicMath.IsCenterKey(alt) ? ThemeManager.CenterKeyNameBrushNormal : ThemeManager.WhiteKeyNameBrushNormal ); drawingContext.DrawText(text, new Point(42 - text.Width, (int)(top + (TrackHeight - text.Height) / 2))); } top += TrackHeight; alt++; } }
protected override void OnRender(DrawingContext drawingContext) { int note = UIConstants.MaxNoteNum - 1 - (int)(OffsetY / TrackHeight); double top = TrackHeight * (UIConstants.MaxNoteNum - note - 1) - OffsetY; while (top < _size.Height) { drawingContext.DrawRectangle( MusicMath.IsBlackKey(note) ? ThemeManager.BlackKeyBrushNormal : MusicMath.IsCenterKey(note) ? ThemeManager.CenterKeyBrushNormal : ThemeManager.WhiteKeyBrushNormal, null, new Rect(0, (int)top, _size.Width, TrackHeight)); if (TrackHeight >= 12) { FormattedText text = new FormattedText( MusicMath.GetNoteString(note), System.Threading.Thread.CurrentThread.CurrentUICulture, FlowDirection.LeftToRight, SystemFonts.CaptionFontFamily.GetTypefaces().First(), 12, MusicMath.IsBlackKey(note) ? ThemeManager.BlackKeyNameBrushNormal : MusicMath.IsCenterKey(note) ? ThemeManager.CenterKeyNameBrushNormal : ThemeManager.WhiteKeyNameBrushNormal, VisualTreeHelper.GetDpi(this).PixelsPerDip ); drawingContext.DrawText(text, new Point(42 - text.Width, (int)(top + (TrackHeight - text.Height) / 2))); } top += TrackHeight; note--; } }