From 02341ecc4a20b714f04cb15e0c838317462a8686 Mon Sep 17 00:00:00 2001 From: Zhe Fang Date: Sat, 25 Oct 2025 16:59:03 -0400 Subject: [PATCH] feature: add angle config for fan lyrics effect --- .../Controls/LyricsSettingsControl.xaml | 20 +++++++++++++++-- .../Helper/VectorHelper.cs | 22 +++++++++++++++++++ .../Models/Settings/LyricsEffectSettings.cs | 4 +++- .../LyricsRendererViewModel.Draw.cs | 3 ++- .../LyricsRendererViewModel.Messages.cs | 4 ++++ .../LyricsRendererViewModel.Update.cs | 2 +- LICENSE.txt | 2 +- 7 files changed, 51 insertions(+), 6 deletions(-) create mode 100644 BetterLyrics.WinUI3/BetterLyrics.WinUI3/Helper/VectorHelper.cs diff --git a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Controls/LyricsSettingsControl.xaml b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Controls/LyricsSettingsControl.xaml index 8c53e2b..0d6a9df 100644 --- a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Controls/LyricsSettingsControl.xaml +++ b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Controls/LyricsSettingsControl.xaml @@ -358,9 +358,25 @@ - + - + + + + + + + 旋转 -> 平移 ds.Transform = Matrix3x2.CreateScale((float)line.ScaleTransition.Value, line.CenterPosition) - * Matrix3x2.CreateRotation((float)line.AngleTransition.Value, currentPlayingLine.Position) + * Matrix3x2.CreateRotation((float)line.AngleTransition.Value, + currentPlayingLine.Position.WithX(_liveStatesService.LiveStates.LyricsWindowStatus.LyricsEffectSettings.FanLyricsAngle < 0 ? (float)_maxLyricsWidth : 0)) * Matrix3x2.CreateTranslation((float)_lyricsXTransition.Value, (float)yOffset); using var combined = new CanvasCommandList(control); diff --git a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/ViewModels/LyricsRendererViewModel/LyricsRendererViewModel.Messages.cs b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/ViewModels/LyricsRendererViewModel/LyricsRendererViewModel.Messages.cs index d794cf9..eda1946 100644 --- a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/ViewModels/LyricsRendererViewModel/LyricsRendererViewModel.Messages.cs +++ b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/ViewModels/LyricsRendererViewModel/LyricsRendererViewModel.Messages.cs @@ -207,6 +207,10 @@ namespace BetterLyrics.WinUI3.ViewModels.LyricsRendererViewModel { _isLayoutChanged = true; } + else if (message.PropertyName == nameof(LyricsEffectSettings.FanLyricsAngle)) + { + _isLayoutChanged = true; + } } else if (message.Sender is LyricsStyleSettings) { diff --git a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/ViewModels/LyricsRendererViewModel/LyricsRendererViewModel.Update.cs b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/ViewModels/LyricsRendererViewModel/LyricsRendererViewModel.Update.cs index 702a875..00980b6 100644 --- a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/ViewModels/LyricsRendererViewModel/LyricsRendererViewModel.Update.cs +++ b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/ViewModels/LyricsRendererViewModel/LyricsRendererViewModel.Update.cs @@ -696,7 +696,7 @@ namespace BetterLyrics.WinUI3.ViewModels.LyricsRendererViewModel line.AngleTransition.StartTransition(_liveStatesService.LiveStates.LyricsWindowStatus.LyricsEffectSettings.IsFanLyricsEnabled ? Math.PI - * (30.0 / 180.0) + * (_liveStatesService.LiveStates.LyricsWindowStatus.LyricsEffectSettings.FanLyricsAngle / 180.0) * distanceFactor * (i > _playingLineIndex ? 1 : -1) : 0 diff --git a/LICENSE.txt b/LICENSE.txt index ed1214f..fe33cba 100644 --- a/LICENSE.txt +++ b/LICENSE.txt @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2025 Zhe Fang +Copyright (c) 2025 Zhe Fang and contributors Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal