diff --git a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Helper/ColorHelper.cs b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Helper/ColorHelper.cs index f0b4924..fbadc6b 100644 --- a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Helper/ColorHelper.cs +++ b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Helper/ColorHelper.cs @@ -131,7 +131,7 @@ namespace BetterLyrics.WinUI3.Helper } case WindowPixelSampleMode.AboveWindow: { - return GetAverageColorFromScreenRegion(myRect.Left, myRect.Top - 3, screenWidth, 1); + return GetAverageColorFromScreenRegion(myRect.Left, myRect.Top - 2, screenWidth, 1); } case WindowPixelSampleMode.WindowArea: { @@ -149,49 +149,21 @@ namespace BetterLyrics.WinUI3.Helper if (width <= 0 || height <= 0) return System.Drawing.Color.Transparent; - var edgeThickness = new Thickness(36, 0, 36, 0); + var edgeThickness = new Thickness(36, 36, 36, 36); List edgeColors = []; // Top edge - if (edgeThickness.Top > 0 && edgeThickness.Top < height) - edgeColors.Add( - GetAverageColorFromScreenRegion( - myRect.Left, - myRect.Top, - width, - (int)edgeThickness.Top - ) - ); + if (edgeThickness.Top > 0) + edgeColors.Add(GetAverageColorFromScreenRegion(myRect.Left, myRect.Top - (int)edgeThickness.Top, width, (int)edgeThickness.Top)); // Bottom edge - if (edgeThickness.Bottom > 0 && edgeThickness.Bottom < height) - edgeColors.Add( - GetAverageColorFromScreenRegion( - myRect.Left, - myRect.Bottom - (int)edgeThickness.Bottom, - width, - (int)edgeThickness.Bottom - ) - ); + if (edgeThickness.Bottom > 0) + edgeColors.Add(GetAverageColorFromScreenRegion(myRect.Left, myRect.Bottom, width, (int)edgeThickness.Bottom)); // Left edge - if (edgeThickness.Left > 0 && edgeThickness.Left < width) - edgeColors.Add( - GetAverageColorFromScreenRegion( - myRect.Left, - myRect.Top + (int)edgeThickness.Top, - (int)edgeThickness.Left, - height - (int)edgeThickness.Top - (int)edgeThickness.Bottom - ) - ); + if (edgeThickness.Left > 0) + edgeColors.Add(GetAverageColorFromScreenRegion(myRect.Left - (int)edgeThickness.Left, myRect.Top, (int)edgeThickness.Left, height)); // Right edge - if (edgeThickness.Right > 0 && edgeThickness.Right < width) - edgeColors.Add( - GetAverageColorFromScreenRegion( - myRect.Right - (int)edgeThickness.Right, - myRect.Top + (int)edgeThickness.Top, - (int)edgeThickness.Right, - height - (int)edgeThickness.Top - (int)edgeThickness.Bottom - ) - ); + if (edgeThickness.Right > 0) + edgeColors.Add(GetAverageColorFromScreenRegion(myRect.Right, myRect.Top, (int)edgeThickness.Right, height)); // 合并四边平均色 if (edgeColors.Count == 0) diff --git a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/ViewModels/LyricsRendererViewModel/LyricsRendererViewModel.Messages.cs b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/ViewModels/LyricsRendererViewModel/LyricsRendererViewModel.Messages.cs index 2b151f8..bc13470 100644 --- a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/ViewModels/LyricsRendererViewModel/LyricsRendererViewModel.Messages.cs +++ b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/ViewModels/LyricsRendererViewModel/LyricsRendererViewModel.Messages.cs @@ -8,6 +8,7 @@ using Microsoft.Extensions.Logging; using Microsoft.UI.Xaml; using System; using System.Collections.ObjectModel; +using System.Diagnostics; using System.Linq; using System.Threading.Tasks; using Windows.UI; @@ -103,6 +104,7 @@ namespace BetterLyrics.WinUI3.ViewModels.LyricsRendererViewModel _immersiveBgColorTransition.StartTransition(message.NewValue); _environmentalColor = message.NewValue; UpdateColorConfig(); + Debug.WriteLine("Line 107: Invoke UpdateColorConfig();"); } } 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 2e1f312..7fee496 100644 --- a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/ViewModels/LyricsRendererViewModel/LyricsRendererViewModel.Update.cs +++ b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/ViewModels/LyricsRendererViewModel/LyricsRendererViewModel.Update.cs @@ -384,6 +384,7 @@ namespace BetterLyrics.WinUI3.ViewModels.LyricsRendererViewModel { _maxLyricsWidth = _canvasWidth - _lyricsXTransition.Value - _rightMargin; _maxLyricsWidth = Math.Max(_maxLyricsWidth, 0); + Debug.WriteLine("Line 387: _isLayoutChanged = true"); _isLayoutChanged = true; } @@ -395,7 +396,12 @@ namespace BetterLyrics.WinUI3.ViewModels.LyricsRendererViewModel if (_isLayoutChanged || _isPlayingLineChanged) { UpdateCanvasTargetYScrollOffset(); - _canvasYScrollTransition.StartTransition(_canvasTargetYScrollOffset, _isLayoutChanged); + if (_isLayoutChanged) + { + Debug.WriteLine("--------------------跳变"); + } + //_canvasYScrollTransition.StartTransition(_canvasTargetYScrollOffset, _isLayoutChanged); + _canvasYScrollTransition.StartTransition(_canvasTargetYScrollOffset); } UpdateVisibleLinesBoundary(); @@ -406,12 +412,16 @@ namespace BetterLyrics.WinUI3.ViewModels.LyricsRendererViewModel _titleXTransition.Update(_elapsedTime); _titleYTransition.Update(_elapsedTime); + _lyricsXTransition.Update(_elapsedTime); _lyricsYTransition.Update(_elapsedTime); + _albumArtXTransition.Update(_elapsedTime); _albumArtYTransition.Update(_elapsedTime); + _lyricsOpacityTransition.Update(_elapsedTime); _albumArtOpacityTransition.Update(_elapsedTime); + _immersiveBgOpacityTransition.Update(_elapsedTime); _immersiveBgColorTransition.Update(_elapsedTime); @@ -667,6 +677,7 @@ namespace BetterLyrics.WinUI3.ViewModels.LyricsRendererViewModel } _isLayoutChanged = true; + Debug.WriteLine("Line 680: _isLayoutChanged = true"); } private void UpdateVisibleLinesProps(ICanvasAnimatedControl control) diff --git a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/ViewModels/LyricsRendererViewModel/LyricsRendererViewModel.cs b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/ViewModels/LyricsRendererViewModel/LyricsRendererViewModel.cs index ec28e6b..c9a5da0 100644 --- a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/ViewModels/LyricsRendererViewModel/LyricsRendererViewModel.cs +++ b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/ViewModels/LyricsRendererViewModel/LyricsRendererViewModel.cs @@ -203,6 +203,7 @@ namespace BetterLyrics.WinUI3.ViewModels.LyricsRendererViewModel IsPlaying = _mediaSessionsService.IsPlaying; UpdateColorConfig(); + Debug.WriteLine("Line 206: Invoke UpdateColorConfig();"); _spectrumAnalyzer = new SpectrumAnalyzer(); } @@ -211,6 +212,7 @@ namespace BetterLyrics.WinUI3.ViewModels.LyricsRendererViewModel { _currentLyricsData = e.LyricsData; _isLayoutChanged = true; + Debug.WriteLine("Line 214: _isLayoutChanged = true"); } private int GetCurrentPlayingLineIndex() @@ -360,6 +362,7 @@ namespace BetterLyrics.WinUI3.ViewModels.LyricsRendererViewModel if (diff >= _timelineSyncThreshold + 5000) { _isLayoutChanged = true; + Debug.WriteLine("Line 364: _isLayoutChanged = true"); } } @@ -403,6 +406,7 @@ namespace BetterLyrics.WinUI3.ViewModels.LyricsRendererViewModel _albumArtDarkAccentColors = e.AlbumArtDarkAccentColors; UpdateColorConfig(); + Debug.WriteLine("Line 409: Invoke UpdateColorConfig();"); } } } diff --git a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/ViewModels/LyricsWindowViewModel.cs b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/ViewModels/LyricsWindowViewModel.cs index 994de1f..c4f289d 100644 --- a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/ViewModels/LyricsWindowViewModel.cs +++ b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/ViewModels/LyricsWindowViewModel.cs @@ -154,7 +154,10 @@ namespace BetterLyrics.WinUI3 { presenter.IsAlwaysOnTop = true; } - UpdateBackdropAccentColor(hwnd); + if (_liveStatesService.LiveStates.LyricsWindowStatus.IsAdaptToEnvironment) + { + UpdateBackdropAccentColor(hwnd); + } }, Constants.Time.DebounceTimeout); } );