diff --git a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Controls/LyricsCanvas.xaml.cs b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Controls/LyricsCanvas.xaml.cs index 9486a04..24d6d21 100644 --- a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Controls/LyricsCanvas.xaml.cs +++ b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Controls/LyricsCanvas.xaml.cs @@ -548,11 +548,12 @@ namespace BetterLyrics.WinUI3.Controls _isMouseScrollingChanged = false; _lyricsRenderer.CalculateLyrics3DMatrix( + lyricsStyle: lyricsStyle, lyricsEffect: lyricsEffect, lyricsX: _renderLyricsStartX, lyricsY: _renderLyricsStartY, lyricsWidth: _renderLyricsWidth, - canvasHeight: sender.Size.Height + lyricsHeight: _renderLyricsHeight ); _isLayoutChanged = false; diff --git a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Renderer/LyricsRenderer.cs b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Renderer/LyricsRenderer.cs index cd771ab..d6cd827 100644 --- a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Renderer/LyricsRenderer.cs +++ b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Renderer/LyricsRenderer.cs @@ -233,13 +233,15 @@ namespace BetterLyrics.WinUI3.Renderer catch (Exception) { } } - public void CalculateLyrics3DMatrix(LyricsEffectSettings lyricsEffect, double lyricsX, double lyricsY, double lyricsWidth, double canvasHeight) + public void CalculateLyrics3DMatrix(LyricsStyleSettings lyricsStyle, LyricsEffectSettings lyricsEffect, double lyricsX, double lyricsY, double lyricsWidth, double lyricsHeight) { if (!lyricsEffect.Is3DLyricsEnabled) return; + var playingLineTopOffsetFactor = lyricsStyle.PlayingLineTopOffset / 100.0; + Vector3 center = new( (float)(lyricsX + lyricsWidth / 2), - (float)(lyricsY + canvasHeight / 2), + (float)(lyricsY + lyricsHeight * playingLineTopOffsetFactor / 2), 0); float rotationX = (float)(Math.PI * lyricsEffect.Lyrics3DXAngle / 180.0);