From d0991c5ddb8d4be1e72f2e99059699e76a87253e Mon Sep 17 00:00:00 2001 From: Zhe Fang Date: Wed, 17 Dec 2025 20:22:26 -0500 Subject: [PATCH] fix: 3d lyrics effect incorrect y center --- .../BetterLyrics.WinUI3/Controls/LyricsCanvas.xaml.cs | 3 ++- .../BetterLyrics.WinUI3/Renderer/LyricsRenderer.cs | 6 ++++-- 2 files changed, 6 insertions(+), 3 deletions(-) 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);