From e2a39fde2bb1144d5dcb6038fe7591ae28ec0c26 Mon Sep 17 00:00:00 2001 From: jasonchenwork Date: Tue, 2 Sep 2025 11:46:50 +0800 Subject: [PATCH] =?UTF-8?q?2509021146=20=E9=81=99=E6=8E=A7=E5=99=A8?= =?UTF-8?q?=E8=A8=8A=E8=99=9F=E8=BC=B8=E5=85=A5=E5=88=A4=E6=96=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CommandHandler.cs | 85 +++++++++++++++----- PrimaryFormParts/PrimaryForm.SoundEffects.cs | 6 +- PrimaryFormParts/PrimaryForm.cs | 3 +- VideoPlayerForm.cs | 34 ++++---- 4 files changed, 82 insertions(+), 46 deletions(-) diff --git a/CommandHandler.cs b/CommandHandler.cs index 6cc8997..d086935 100644 --- a/CommandHandler.cs +++ b/CommandHandler.cs @@ -30,10 +30,12 @@ namespace DualScreenDemo switch (indata) { case "A261A4": // 輸入 - HandleInput("a"); + // HandleInput("a"); + HandleRoomState("A261A4"); break; case "A262A4": // 插播 - HandleInput("b"); + // HandleInput("b"); + HandleRoomState("A262A4"); break; case "A263A4": ClearDisplay(); @@ -47,20 +49,24 @@ namespace DualScreenDemo PreviousPage(); break; case "A26BA4": - NextPage(); + NextPage(); break; case "A271A4": - HandleNewSongAnnouncements(); + // HandleNewSongAnnouncements(); + HandleRoomState("A271A4"); break; case "A273A4": - HandleHotSongAnnouncements(); + // HandleHotSongAnnouncements(); + HandleRoomState("A273A4"); break; case "A267A4": - SkipToNextSong(); - ClearDisplay(); + // SkipToNextSong(); + // ClearDisplay(); + HandleRoomState("A267A4"); break; case "A269A4": - ReplayCurrentSong(); + // ReplayCurrentSong(); + HandleRoomState("A269A4"); break; // 原唱 case "A26CA4": @@ -69,41 +75,42 @@ namespace DualScreenDemo break; // 導唱 case "A26EA4": - SafeInvokeAction("A26EA4",() => VideoPlayerForm.Instance.ToggleVocalRemoval()); + SafeInvokeAction("A26EA4",() => VideoPlayerForm.Instance.ToggleVocalRemoval()); break; case "A26DA4": - PauseOrResumeSong(); + PauseOrResumeSong(); break; case "A276A4": - ToggleMute(); + ToggleMute(); break; case "A274A4": - OverlayForm.MainForm.currentPage = 1; - HandleArtistAnnouncements(); + // OverlayForm.MainForm.currentPage = 1; + // HandleArtistAnnouncements(); + HandleRoomState("A274A4"); break; case "A2B3A4": SafeInvokeAction("A2B3A4",() => OverlayForm.MainForm.ShowTopRightLabelTime("音量 ↑ ")); break; case "A2B4A4": - SafeInvokeAction("A2B4A4",() => OverlayForm.MainForm.ShowTopRightLabelTime("音量 ↓ ")); + SafeInvokeAction("A2B4A4",() => OverlayForm.MainForm.ShowTopRightLabelTime("音量 ↓ ")); break; case "A2B5A4": - SafeInvokeAction("A2B5A4",() => OverlayForm.MainForm.ShowTopRightLabelTime("麥克風 ↑ ")); + SafeInvokeAction("A2B5A4",() => OverlayForm.MainForm.ShowTopRightLabelTime("麥克風 ↑ ")); break; case "A2B6A4": - SafeInvokeAction("A2B6A4",() => OverlayForm.MainForm.ShowTopRightLabelTime("麥克風 ↓ ")); + SafeInvokeAction("A2B6A4",() => OverlayForm.MainForm.ShowTopRightLabelTime("麥克風 ↓ ")); break; case "A2C2A4": - SafeInvokeAction("A2C2A4",() => OverlayForm.MainForm.ShowTopRightEchoLabel("標準迴音")); + SafeInvokeAction("A2C2A4",() => OverlayForm.MainForm.ShowTopRightEchoLabel("標準迴音")); break; case "A2C3A4": - SafeInvokeAction("A2C3A4",() => OverlayForm.MainForm.ShowTopRightEchoLabel("專業迴音")); + SafeInvokeAction("A2C3A4",() => OverlayForm.MainForm.ShowTopRightEchoLabel("專業迴音")); break; case "A2C4A4": - SafeInvokeAction("A2C4A4",() => OverlayForm.MainForm.ShowTopRightEchoLabel("廣場迴音")); + SafeInvokeAction("A2C4A4",() => OverlayForm.MainForm.ShowTopRightEchoLabel("廣場迴音")); break; case "A2C1A4": - SafeInvokeAction("A2C1A4",() => OverlayForm.MainForm.ShowTopRightEchoLabel("唱將迴音")); + SafeInvokeAction("A2C1A4",() => OverlayForm.MainForm.ShowTopRightEchoLabel("唱將迴音")); break; case "A2D5A4": SafeInvokeAction("A2D5A4",() => OverlayForm.MainForm.ShowTopRightLabelTime(" 明亮 ")); @@ -160,6 +167,44 @@ namespace DualScreenDemo return Task.CompletedTask; } + + private void HandleRoomState(string action) + { + if (Program.room.IsOpen()==false) + { + switch (action) + { + case "A261A4": // 輸入 + HandleInput("a"); + break; + case "A262A4": // 插播 + HandleInput("b"); + break; + case "A271A4": + HandleNewSongAnnouncements(); + break; + case "A273A4": + HandleHotSongAnnouncements(); + break; + case "A267A4": + SkipToNextSong(); + ClearDisplay(); + break; + case "A269A4": + ReplayCurrentSong(); + break; + case "A274A4": + OverlayForm.MainForm.currentPage = 1; + HandleArtistAnnouncements(); + break; + default: + break; + } + } + } + + + private void SafeInvokeAction(string commandKey, Action action) { // 真正執行 UI 操作 diff --git a/PrimaryFormParts/PrimaryForm.SoundEffects.cs b/PrimaryFormParts/PrimaryForm.SoundEffects.cs index 38738d0..2a0816d 100644 --- a/PrimaryFormParts/PrimaryForm.SoundEffects.cs +++ b/PrimaryFormParts/PrimaryForm.SoundEffects.cs @@ -149,12 +149,10 @@ namespace DualScreenDemo private void ShowImageOnPictureBoxSceneSoundEffects(string imagePath) { Bitmap originalImage = new Bitmap(imagePath); - - Rectangle cropArea = new Rectangle(856, 422, 342, 295); - + pictureBoxSceneSoundEffects.Image = originalImage; - ResizeAndPositionPictureBox(pictureBoxSceneSoundEffects, cropArea.X, cropArea.Y, cropArea.Width, cropArea.Height); + ResizeAndPositionPictureBox(pictureBoxSceneSoundEffects, 856, 422, 342, 295); pictureBoxSceneSoundEffects.Visible = true; } diff --git a/PrimaryFormParts/PrimaryForm.cs b/PrimaryFormParts/PrimaryForm.cs index 13491b0..0c9dcd4 100644 --- a/PrimaryFormParts/PrimaryForm.cs +++ b/PrimaryFormParts/PrimaryForm.cs @@ -152,7 +152,7 @@ namespace DualScreenDemo private Timer autoRefreshTimer; private Timer timerCountdown; string Rtime; - bool Gaintest = true; + bool Gaintest = false; //private Label pageNumberLabel; // 添加頁碼標籤 public PrimaryForm() { @@ -1401,7 +1401,6 @@ namespace DualScreenDemo using (Graphics g = Graphics.FromImage(bmp)) { - g.DrawImage(source, 0, 0, section, GraphicsUnit.Pixel); } diff --git a/VideoPlayerForm.cs b/VideoPlayerForm.cs index 372cc74..eea7ce5 100644 --- a/VideoPlayerForm.cs +++ b/VideoPlayerForm.cs @@ -354,16 +354,6 @@ namespace DualScreenDemo PrimaryForm.Instance.videoView0.Visible = true; //影片畫面播放器載入media設置聲道 _mediaService1.LoadMedia(pathToPlay, song.isPublicSong ? 0 : 1); - //公播時註銷原唱按鈕事件 - if (song.isPublicSong) - { - PrimaryForm.Instance.originalSongButton.Click -= PrimaryForm.Instance.OriginalSongButton_Click; - } - else - { - PrimaryForm.Instance.originalSongButton.Click -= PrimaryForm.Instance.OriginalSongButton_Click; - PrimaryForm.Instance.originalSongButton.Click += PrimaryForm.Instance.OriginalSongButton_Click; - } isVocalRemoved = true; if (isMuted) { Mute(true); } @@ -521,19 +511,23 @@ namespace DualScreenDemo private bool isVocalRemoved = true; public void ToggleVocalRemoval() { - if (isVocalRemoved) + if (SongList.Current().isPublicSong == false) { - _mediaService1.Player.Select(TrackType.Audio, "audio/2"); + if (isVocalRemoved) + { + _mediaService1.Player.Select(TrackType.Audio, "audio/2"); - isVocalRemoved = false; + isVocalRemoved = false; + } + else + { + _mediaService1.Player.Select(TrackType.Audio, "audio/1,audio/3"); + // _mediaService1.Player.Select(TrackType.Audio, "audio/3"); + isVocalRemoved = true; + } + OverlayForm.MainForm.ShowTopRightLabelTime(isVocalRemoved ? "無人聲" : "有人聲"); } - else - { - _mediaService1.Player.Select(TrackType.Audio, "audio/1,audio/3"); - // _mediaService1.Player.Select(TrackType.Audio, "audio/3"); - isVocalRemoved = true; - } - OverlayForm.MainForm.ShowTopRightLabelTime(isVocalRemoved ? "無人聲" : "有人聲"); + } }