From 8dfb9441f395ed6c13e7a2befb3c1eb6d6d187cb Mon Sep 17 00:00:00 2001 From: jasonchenwork Date: Tue, 17 Jun 2025 09:31:00 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9C=96=E5=BA=AB=E6=9B=B4=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../NewSongAlert/PrimaryForm.NewSongAlert.cs | 6 +- PrimaryFormParts/PrimaryForm.Favorite.cs | 53 ++-- PrimaryFormParts/PrimaryForm.QRCode.cs | 10 +- ...PrimaryForm.SingerSearch.BopomofoSearch.cs | 12 +- .../PrimaryForm.SingerSearch.EnglishSearch.cs | 28 +- .../PrimaryForm.SingerSearch.PinyinSearch.cs | 4 +- ...rimaryForm.SingerSearch.WordCountSearch.cs | 12 +- .../PrimaryForm.SongSearch.BopomofoSearch.cs | 4 +- .../PrimaryForm.SongSearch.NumberSearch.cs | 13 +- .../PrimaryForm.SongSearch.PinyinSearch.cs | 4 +- .../PrimaryForm.SongSearch.WordCountSearch.cs | 10 +- themes/superstar/_www/clicked-song.html | 2 +- themes/superstar/_www/jgnq0yhxnfl/qrcode.png | Bin 0 -> 3922 bytes .../superstar/_www/jgnq0yhxnfl/windows.html | 288 ++++++++++++++++++ themes/superstar/_www/love-message.html | 2 +- themes/superstar/_www/mood-stickers.html | 2 +- themes/superstar/_www/my-favorite.html | 2 +- themes/superstar/_www/new-songs.html | 2 +- themes/superstar/_www/profile-settings.html | 4 +- themes/superstar/_www/register.html | 4 +- themes/superstar/_www/search-singer.html | 20 +- themes/superstar/_www/search-song.html | 13 +- themes/superstar/_www/social-media.html | 2 +- themes/superstar/_www/song-order.html | 2 +- themes/superstar/_www/sound-control.html | 2 +- themes/superstar/_www/top-ranking.html | 2 +- themes/superstar/_www/windows.html | 4 +- themes/superstar/_www/手機點歌/BANNER-02.png | Bin 136365 -> 86273 bytes themes/superstar/_www/手機點歌/BANNER-03.png | Bin 118421 -> 73283 bytes themes/superstar/_www/手機點歌/BANNER-04.png | Bin 110761 -> 69287 bytes themes/superstar/_www/手機點歌/BANNER-05.png | Bin 137545 -> 94800 bytes themes/superstar/_www/手機點歌/BANNER-06.png | Bin 136626 -> 86828 bytes themes/superstar/_www/手機點歌/BANNER-07.png | Bin 118946 -> 76836 bytes themes/superstar/_www/手機點歌/BANNER-08.png | Bin 137132 -> 86679 bytes themes/superstar/_www/手機點歌/BANNER-09.png | Bin 137158 -> 94580 bytes themes/superstar/_www/手機點歌/BANNER-10.png | Bin 135942 -> 86446 bytes themes/superstar/_www/手機點歌/BANNER-11.png | Bin 137737 -> 90639 bytes themes/superstar/_www/手機點歌/BANNER-12.png | Bin 135668 -> 85971 bytes themes/superstar/_www/手機點歌/BANNER-13.png | Bin 137093 -> 94898 bytes themes/superstar/_www/手機點歌/BANNER-14.png | Bin 135013 -> 85653 bytes themes/superstar/_www/手機點歌/BANNER-15.png | Bin 0 -> 169809 bytes .../_www/手機點歌/BANNER_工作區域 1.png | Bin 139185 -> 95403 bytes themes/superstar/_www/手機點歌/BG-3-01.png | Bin 30890 -> 0 bytes themes/superstar/_www/手機點歌/BG-3-02.png | Bin 32868 -> 0 bytes themes/superstar/_www/手機點歌/BG-3-03.png | Bin 29559 -> 0 bytes themes/superstar/_www/手機點歌/BG-3-04.png | Bin 592958 -> 537476 bytes .../superstar/_www/手機點歌/LOGO0728-02.png | Bin 32868 -> 0 bytes .../superstar/_www/手機點歌/LOGO0728-03.png | Bin 29559 -> 0 bytes .../_www/手機點歌/LOGO0728_工作區域 1.png | Bin 30890 -> 0 bytes .../_www/手機點歌/LOGO_721x211px.png | Bin 153990 -> 142931 bytes .../_www/手機點歌/LOGO_800x400px.png | Bin 450903 -> 211466 bytes themes/superstar/_www/手機點歌/音控-02.jpg | Bin 42380 -> 4705 bytes themes/superstar/_www/手機點歌/音控-03.jpg | Bin 42183 -> 4673 bytes themes/superstar/_www/手機點歌/音控-04.jpg | Bin 43488 -> 6060 bytes themes/superstar/_www/手機點歌/音控-05.jpg | Bin 43337 -> 6097 bytes themes/superstar/_www/手機點歌/音控-06.jpg | Bin 42563 -> 4458 bytes themes/superstar/_www/手機點歌/音控-07.jpg | Bin 45922 -> 7522 bytes themes/superstar/_www/手機點歌/音控-08.jpg | Bin 45053 -> 6726 bytes themes/superstar/_www/手機點歌/音控-09.jpg | Bin 43694 -> 5382 bytes themes/superstar/_www/手機點歌/音控-10.jpg | Bin 43870 -> 5686 bytes themes/superstar/_www/手機點歌/音控-11.jpg | Bin 44092 -> 5283 bytes themes/superstar/_www/手機點歌/音控-12.jpg | Bin 44545 -> 5612 bytes themes/superstar/_www/手機點歌/音控-13.jpg | Bin 44529 -> 4839 bytes themes/superstar/_www/手機點歌/音控-14.jpg | Bin 45597 -> 5337 bytes themes/superstar/_www/手機點歌/音控-15.jpg | Bin 43639 -> 4937 bytes .../_www/手機點歌/音控_工作區域 1.jpg | Bin 42142 -> 4390 bytes themes/superstar/_www/手機點歌/首頁-02.png | Bin 15539 -> 7774 bytes themes/superstar/_www/手機點歌/首頁-03.png | Bin 17585 -> 9312 bytes themes/superstar/_www/手機點歌/首頁-04.png | Bin 16638 -> 7518 bytes themes/superstar/_www/手機點歌/首頁-05.png | Bin 18034 -> 7755 bytes themes/superstar/_www/手機點歌/首頁-06.png | Bin 18153 -> 8949 bytes themes/superstar/_www/手機點歌/首頁-07.png | Bin 13091 -> 7269 bytes themes/superstar/_www/手機點歌/首頁-08.png | Bin 17729 -> 7539 bytes themes/superstar/_www/手機點歌/首頁-09.png | Bin 11291 -> 5183 bytes themes/superstar/_www/手機點歌/首頁-10.png | Bin 17507 -> 8869 bytes .../_www/手機點歌/首頁_工作區域 1.png | Bin 16393 -> 7486 bytes 76 files changed, 422 insertions(+), 85 deletions(-) create mode 100644 themes/superstar/_www/jgnq0yhxnfl/qrcode.png create mode 100644 themes/superstar/_www/jgnq0yhxnfl/windows.html create mode 100644 themes/superstar/_www/手機點歌/BANNER-15.png delete mode 100644 themes/superstar/_www/手機點歌/BG-3-01.png delete mode 100644 themes/superstar/_www/手機點歌/BG-3-02.png delete mode 100644 themes/superstar/_www/手機點歌/BG-3-03.png delete mode 100644 themes/superstar/_www/手機點歌/LOGO0728-02.png delete mode 100644 themes/superstar/_www/手機點歌/LOGO0728-03.png delete mode 100644 themes/superstar/_www/手機點歌/LOGO0728_工作區域 1.png diff --git a/PrimaryFormParts/NewSongAlert/PrimaryForm.NewSongAlert.cs b/PrimaryFormParts/NewSongAlert/PrimaryForm.NewSongAlert.cs index 2f2324e..b6ef384 100644 --- a/PrimaryFormParts/NewSongAlert/PrimaryForm.NewSongAlert.cs +++ b/PrimaryFormParts/NewSongAlert/PrimaryForm.NewSongAlert.cs @@ -173,7 +173,7 @@ namespace DualScreenDemo this.Controls.Add(yueYuButtonNewSong); - yingWenButtonNewSong = new Button { Text = "英文2", Visible = false }; + yingWenButtonNewSong = new Button {Visible = false }; ResizeAndPositionButton(yingWenButtonNewSong, 1214, 418, 209, 59); Rectangle yingWenNewSongButtonCropArea = new Rectangle(1214, 418, 209, 59); @@ -189,7 +189,7 @@ namespace DualScreenDemo this.Controls.Add(yingWenButtonNewSong); - riYuButtonNewSong = new Button { Text = "日語2", Visible = false }; + riYuButtonNewSong = new Button { Visible = false }; ResizeAndPositionButton(riYuButtonNewSong, 1214, 481, 209, 59); Rectangle riYuNewSongButtonCropArea = new Rectangle(1214, 481, 209, 59); @@ -205,7 +205,7 @@ namespace DualScreenDemo this.Controls.Add(riYuButtonNewSong); - hanYuButtonNewSong = new Button { Text = "韓語2", Visible = false }; + hanYuButtonNewSong = new Button {Visible = false }; ResizeAndPositionButton(hanYuButtonNewSong, 1214, 544, 209, 58); Rectangle hanYuNewSongButtonCropArea = new Rectangle(1214, 544, 209, 58); diff --git a/PrimaryFormParts/PrimaryForm.Favorite.cs b/PrimaryFormParts/PrimaryForm.Favorite.cs index a74e81d..09b16ed 100644 --- a/PrimaryFormParts/PrimaryForm.Favorite.cs +++ b/PrimaryFormParts/PrimaryForm.Favorite.cs @@ -25,15 +25,15 @@ namespace DualScreenDemo int[,] coords = new int[,] { {794, 508, 70, 65}, - {878, 508, 70, 65}, - {962, 508, 70, 65}, - {1046, 508, 70, 65}, - {1130, 508, 70, 65}, + {873, 508, 70, 65}, + {952, 508, 70, 65}, + {1031, 508, 70, 65}, + {1110, 508, 70, 65}, {794, 580, 70, 65}, - {878, 580, 70, 65}, - {962, 580, 70, 65}, - {1046, 580, 70, 65}, - {1130, 580, 70, 65} + {873, 580, 70, 65}, + {952, 580, 70, 65}, + {1031, 580, 70, 65}, + {1110, 580, 70, 65} }; int screenW = Screen.PrimaryScreen.Bounds.Width; @@ -53,7 +53,7 @@ namespace DualScreenDemo string fileName = (i + 2).ToString("00"); - string filePath = Path.Combine(Application.StartupPath, @"themes\superstar\我的最愛\我的最愛-" + fileName + ".jpg"); + string filePath = Path.Combine(Application.StartupPath, @"themes\superstar\我的最愛\我的最愛-" + fileName + ".png"); favoriteNumberButton[i].BackgroundImage = Image.FromFile(filePath); favoriteNumberButton[i].BackgroundImageLayout = ImageLayout.Stretch; favoriteNumberButton[i].FlatStyle = FlatStyle.Flat; @@ -85,7 +85,7 @@ namespace DualScreenDemo Name = "enterFavoriteButton" }; ResizeAndPositionButton(enterFavoriteButton, 832, 657, 70, 65); - enterFavoriteButton.BackgroundImage = Image.FromFile(Path.Combine(Application.StartupPath, @"themes\superstar\我的最愛\我的最愛-12.jpg")); + enterFavoriteButton.BackgroundImage = Image.FromFile(Path.Combine(Application.StartupPath, @"themes\superstar\我的最愛\我的最愛-12.png")); enterFavoriteButton.BackgroundImageLayout = ImageLayout.Stretch; enterFavoriteButton.FlatStyle = FlatStyle.Flat; enterFavoriteButton.FlatAppearance.BorderSize = 0; @@ -100,7 +100,7 @@ namespace DualScreenDemo Name = "newFavoriteButton" }; ResizeAndPositionButton(newFavoriteButton, 916, 657, 70, 65); - newFavoriteButton.BackgroundImage = Image.FromFile(Path.Combine(Application.StartupPath, @"themes\superstar\我的最愛\我的最愛-13.jpg")); + newFavoriteButton.BackgroundImage = Image.FromFile(Path.Combine(Application.StartupPath, @"themes\superstar\我的最愛\我的最愛-13.png")); newFavoriteButton.BackgroundImageLayout = ImageLayout.Stretch; newFavoriteButton.FlatStyle = FlatStyle.Flat; newFavoriteButton.FlatAppearance.BorderSize = 0; @@ -115,7 +115,7 @@ namespace DualScreenDemo Name = "refillFavoriteButton" }; ResizeAndPositionButton(refillFavoriteButton, 999, 657, 70, 65); - refillFavoriteButton.BackgroundImage = Image.FromFile(Path.Combine(Application.StartupPath, @"themes\superstar\我的最愛\我的最愛-14.jpg")); + refillFavoriteButton.BackgroundImage = Image.FromFile(Path.Combine(Application.StartupPath, @"themes\superstar\我的最愛\我的最愛-14.png")); refillFavoriteButton.BackgroundImageLayout = ImageLayout.Stretch; refillFavoriteButton.FlatStyle = FlatStyle.Flat; refillFavoriteButton.FlatAppearance.BorderSize = 0; @@ -130,7 +130,7 @@ namespace DualScreenDemo Name = "closeFavoriteButton" }; ResizeAndPositionButton(closeFavoriteButton, 1083, 657, 70, 65); - closeFavoriteButton.BackgroundImage = Image.FromFile(Path.Combine(Application.StartupPath, @"themes\superstar\我的最愛\我的最愛-15.jpg")); + closeFavoriteButton.BackgroundImage = Image.FromFile(Path.Combine(Application.StartupPath, @"themes\superstar\我的最愛\我的最愛-15.png")); closeFavoriteButton.BackgroundImageLayout = ImageLayout.Stretch; closeFavoriteButton.FlatStyle = FlatStyle.Flat; closeFavoriteButton.FlatAppearance.BorderSize = 0; @@ -349,7 +349,7 @@ namespace DualScreenDemo if (!FavoritePictureBox.Visible) { - ShowImageOnFavoritePictureBox(Path.Combine(Application.StartupPath, @"themes\superstar\我的最愛\我的最愛_工作區域.jpg")); + ShowImageOnFavoritePictureBox(Path.Combine(Application.StartupPath, @"themes\superstar\我的最愛\我的最愛_工作區域.png")); SetFavoritePictureBoxAndButtonsVisibility(true); } else @@ -399,14 +399,27 @@ namespace DualScreenDemo FavoritePictureBox.Image = image; // 設定 PictureBox 的大小與位置(依你的需要調整) - ResizeAndPositionPictureBox(FavoritePictureBox, 773, 380, (int)(image.Width * 0.8f) , (int)(image.Height * 0.8f)); + // ResizeAndPositionPictureBox(FavoritePictureBox, 773, 380, image.Width , image.Height); + // ResizeAndPositionPictureBox(FavoritePictureBox, 773, 380, (int)(image.Width * 0.8f) , (int)(image.Height * 0.8f)); + // 不要用 ResizeAndPositionPictureBox 這東西是static 他會導致其他東西顯示錯誤 + int screenW = Screen.PrimaryScreen.Bounds.Width; + int screenH = Screen.PrimaryScreen.Bounds.Height; + float widthRatio = screenW / (float)1440; + float heightRatio = screenH / (float)900; + + + FavoritePictureBox.Location = new Point( + (int)(773 * widthRatio), + (int)(380 * heightRatio) + ); + FavoritePictureBox.Size = new Size( + (int)(image.Width * widthRatio), + (int)(image.Height * heightRatio) + ); + } FavoritePictureBox.Visible = true; - } - else - { - Console.WriteLine("圖片檔案不存在:" + imagePath); - } + } diff --git a/PrimaryFormParts/PrimaryForm.QRCode.cs b/PrimaryFormParts/PrimaryForm.QRCode.cs index dc46db5..68c42ff 100644 --- a/PrimaryFormParts/PrimaryForm.QRCode.cs +++ b/PrimaryFormParts/PrimaryForm.QRCode.cs @@ -11,7 +11,7 @@ namespace DualScreenDemo try { - string imagePath = Path.Combine(Application.StartupPath, "themes/superstar/cropped_qrcode.jpg"); + string imagePath = Path.Combine(Application.StartupPath, "themes/superstar/cropped_qrcode.png"); if (!File.Exists(imagePath)) { Console.WriteLine("Base image not found: " + imagePath); @@ -79,8 +79,10 @@ namespace DualScreenDemo { using (Graphics g = Graphics.FromImage(bitmap)) { - - g.DrawImage(baseImage, 0, 0); + + // g.DrawImage(baseImage, 0, 0); + // cropped qrcode 版型不同設定調整 + g.DrawImage(baseImage, new Rectangle(0, 0, bitmap.Width, bitmap.Height)); Rectangle qrCodeRect = new Rectangle(32, 39, 165, 165); g.DrawImage(qrCodeImage, qrCodeRect); @@ -94,7 +96,7 @@ namespace DualScreenDemo ResizeAndPositionControl(pictureBoxQRCode, 975, 442, 226, 274); - Bitmap originalImage = new Bitmap(Path.Combine(Application.StartupPath, "themes\\superstar\\cropped_qrcode.jpg")); + Bitmap originalImage = new Bitmap(Path.Combine(Application.StartupPath, "themes\\superstar\\cropped_qrcode.png")); Rectangle closeQRCodeCropArea = new Rectangle(198, 6, 22, 22); diff --git a/PrimaryFormParts/SingerSearch/PrimaryForm.SingerSearch.BopomofoSearch.cs b/PrimaryFormParts/SingerSearch/PrimaryForm.SingerSearch.BopomofoSearch.cs index 4d376b7..2c1b4e7 100644 --- a/PrimaryFormParts/SingerSearch/PrimaryForm.SingerSearch.BopomofoSearch.cs +++ b/PrimaryFormParts/SingerSearch/PrimaryForm.SingerSearch.BopomofoSearch.cs @@ -81,7 +81,8 @@ namespace DualScreenDemo var parser = new FileIniDataParser(); // 設定檔路徑 - string iniFilePath = "config.ini"; + string iniFilePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "config.ini"); + IniData data; @@ -107,7 +108,8 @@ namespace DualScreenDemo private IniData LoadConfigData() { var parser = new FileIniDataParser(); - string iniFilePath = "config.ini"; + string iniFilePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "config.ini"); + // 使用 UTF-8 讀取 INI 檔案並解析內容 using (var reader = new StreamReader(iniFilePath, Encoding.UTF8)) @@ -635,7 +637,8 @@ namespace DualScreenDemo { // 創建 INI 解析器 var parser = new FileIniDataParser(); - string iniFilePath = "config.ini"; // 配置文件的路徑 + string iniFilePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "config.ini"); + IniData data; // 打開並讀取配置文件 @@ -681,7 +684,8 @@ namespace DualScreenDemo private void LoadPictureBoxZhuYinSingerCoordsFromConfig() { var parser = new FileIniDataParser(); - IniData data = parser.ReadFile("config.ini"); + string iniPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "config.ini"); + IniData data = parser.ReadFile(iniPath); var coords = data["PictureBoxZhuYinSingers"]; pictureBoxZhuYinSingerCoords = ( diff --git a/PrimaryFormParts/SingerSearch/PrimaryForm.SingerSearch.EnglishSearch.cs b/PrimaryFormParts/SingerSearch/PrimaryForm.SingerSearch.EnglishSearch.cs index 2d2e1dd..07a8b61 100644 --- a/PrimaryFormParts/SingerSearch/PrimaryForm.SingerSearch.EnglishSearch.cs +++ b/PrimaryFormParts/SingerSearch/PrimaryForm.SingerSearch.EnglishSearch.cs @@ -52,7 +52,9 @@ namespace DualScreenDemo private void LoadNumberButtonCoordsFromConfig() { var parser = new FileIniDataParser(); - IniData data = parser.ReadFile("config.ini"); + string iniPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "config.ini"); + IniData data = parser.ReadFile(iniPath); + var buttonList = new List<(int X, int Y, int Width, int Height)>(); @@ -398,12 +400,18 @@ namespace DualScreenDemo clearButtonEnglishSingers.Visible = isVisible; if (isVisible) clearButtonEnglishSingers.BringToFront(); } + if (closeButtonEnglishSingers != null) + { + closeButtonEnglishSingers.Visible = isVisible; + if (isVisible) closeButtonEnglishSingers.BringToFront(); + } + - closeButtonEnglishSingers.Visible = isVisible; - if (isVisible) closeButtonEnglishSingers.BringToFront(); - - inputBoxEnglishSingers.Visible = isVisible; - if (isVisible) inputBoxEnglishSingers.BringToFront(); + if (inputBoxEnglishSingers != null) + { + inputBoxEnglishSingers.Visible = isVisible; + if (isVisible) inputBoxEnglishSingers.BringToFront(); + } ResumeLayout(); PerformLayout(); @@ -416,10 +424,10 @@ namespace DualScreenDemo } - modifyButtonEnglishSingers.Refresh(); - clearButtonEnglishSingers.Refresh(); - closeButtonEnglishSingers.Refresh(); - inputBoxEnglishSingers.Refresh(); + if (modifyButtonEnglishSingers != null) modifyButtonEnglishSingers.Refresh(); + if (clearButtonEnglishSingers != null) clearButtonEnglishSingers.Refresh(); + if (closeButtonEnglishSingers != null) closeButtonEnglishSingers.Refresh(); + if (inputBoxEnglishSingers != null) inputBoxEnglishSingers.Refresh(); }; if (this.InvokeRequired) diff --git a/PrimaryFormParts/SingerSearch/PrimaryForm.SingerSearch.PinyinSearch.cs b/PrimaryFormParts/SingerSearch/PrimaryForm.SingerSearch.PinyinSearch.cs index 2e47e8e..8f60de5 100644 --- a/PrimaryFormParts/SingerSearch/PrimaryForm.SingerSearch.PinyinSearch.cs +++ b/PrimaryFormParts/SingerSearch/PrimaryForm.SingerSearch.PinyinSearch.cs @@ -252,7 +252,9 @@ namespace DualScreenDemo private void LoadPictureBoxPinYinSingerCoordsFromConfig() { var parser = new FileIniDataParser(); - IniData data = parser.ReadFile("config.ini"); + string iniPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "config.ini"); + IniData data = parser.ReadFile(iniPath); + var coords = data["PictureBoxPinYinSingers"]; pictureBoxPinYinSingerCoords = ( diff --git a/PrimaryFormParts/SingerSearch/PrimaryForm.SingerSearch.WordCountSearch.cs b/PrimaryFormParts/SingerSearch/PrimaryForm.SingerSearch.WordCountSearch.cs index 7d27c22..42ef5c8 100644 --- a/PrimaryFormParts/SingerSearch/PrimaryForm.SingerSearch.WordCountSearch.cs +++ b/PrimaryFormParts/SingerSearch/PrimaryForm.SingerSearch.WordCountSearch.cs @@ -99,7 +99,8 @@ namespace DualScreenDemo var parser = new FileIniDataParser(); // 設定檔路徑 - string iniFilePath = "config.ini"; + string iniFilePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "config.ini"); + IniData data; @@ -125,7 +126,8 @@ namespace DualScreenDemo private IniData LoadConfigDataforWordCountSingers() { var parser = new FileIniDataParser(); - string iniFilePath = "config.ini"; + string iniFilePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "config.ini"); + // 使用 UTF-8 讀取 INI 檔案並解析內容 using (var reader = new StreamReader(iniFilePath, Encoding.UTF8)) @@ -636,7 +638,8 @@ namespace DualScreenDemo { // 創建 INI 解析器 var parser = new FileIniDataParser(); - string iniFilePath = "config.ini"; // 配置文件的路徑 + string iniFilePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "config.ini"); + IniData data; // 打開並讀取配置文件 @@ -682,7 +685,8 @@ namespace DualScreenDemo private void LoadPictureBoxWordCountSingerCoordsFromConfig() { var parser = new FileIniDataParser(); - IniData data = parser.ReadFile("config.ini"); + string iniPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "config.ini"); + IniData data = parser.ReadFile(iniPath); var coords = data["PictureBoxWordCountSingers"]; pictureBoxWordCountSingerCoords = ( diff --git a/PrimaryFormParts/SongSearch/PrimaryForm.SongSearch.BopomofoSearch.cs b/PrimaryFormParts/SongSearch/PrimaryForm.SongSearch.BopomofoSearch.cs index 1195a13..50063a1 100644 --- a/PrimaryFormParts/SongSearch/PrimaryForm.SongSearch.BopomofoSearch.cs +++ b/PrimaryFormParts/SongSearch/PrimaryForm.SongSearch.BopomofoSearch.cs @@ -378,7 +378,9 @@ namespace DualScreenDemo var parser = new FileIniDataParser(); // 讀取 config.ini 設定檔的內容 - IniData data = parser.ReadFile("config.ini"); + string iniPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "config.ini"); + IniData data = parser.ReadFile(iniPath); + // 取得 "PictureBoxZhuYinSongs" 段落的設定數據 var coords = data["PictureBoxZhuYinSongs"]; diff --git a/PrimaryFormParts/SongSearch/PrimaryForm.SongSearch.NumberSearch.cs b/PrimaryFormParts/SongSearch/PrimaryForm.SongSearch.NumberSearch.cs index aacba35..76296f1 100644 --- a/PrimaryFormParts/SongSearch/PrimaryForm.SongSearch.NumberSearch.cs +++ b/PrimaryFormParts/SongSearch/PrimaryForm.SongSearch.NumberSearch.cs @@ -102,7 +102,8 @@ namespace DualScreenDemo var parser = new FileIniDataParser(); // 設定檔路徑 - string iniFilePath = "config.ini"; + string iniFilePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "config.ini"); + IniData data; @@ -128,7 +129,8 @@ namespace DualScreenDemo private IniData LoadConfigDataforSongIDSearch() { var parser = new FileIniDataParser(); - string iniFilePath = "config.ini"; + string iniFilePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "config.ini"); + // 使用 UTF-8 讀取 INI 檔案並解析內容 using (var reader = new StreamReader(iniFilePath, Encoding.UTF8)) @@ -647,7 +649,8 @@ namespace DualScreenDemo { // 創建 INI 解析器 var parser = new FileIniDataParser(); - string iniFilePath = "config.ini"; // 配置文件的路徑 + string iniFilePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "config.ini"); + IniData data; // 打開並讀取配置文件 @@ -693,7 +696,9 @@ namespace DualScreenDemo private void LoadPictureBoxSongIDSongCoordsFromConfig() { var parser = new FileIniDataParser(); - IniData data = parser.ReadFile("config.ini"); + string iniPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "config.ini"); + IniData data = parser.ReadFile(iniPath); + var coords = data["PictureBoxSongIDSearch"]; pictureBoxSongIDSongCoords = ( diff --git a/PrimaryFormParts/SongSearch/PrimaryForm.SongSearch.PinyinSearch.cs b/PrimaryFormParts/SongSearch/PrimaryForm.SongSearch.PinyinSearch.cs index 0b58c23..538e40a 100644 --- a/PrimaryFormParts/SongSearch/PrimaryForm.SongSearch.PinyinSearch.cs +++ b/PrimaryFormParts/SongSearch/PrimaryForm.SongSearch.PinyinSearch.cs @@ -375,7 +375,9 @@ namespace DualScreenDemo var parser = new FileIniDataParser(); // 讀取 config.ini 文件並解析成 IniData 對象 - IniData data = parser.ReadFile("config.ini"); + string iniPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "config.ini"); + IniData data = parser.ReadFile(iniPath); + // 取得 PictureBoxPinYinSongs 區段的設定值 var coords = data["PictureBoxPinYinSongs"]; diff --git a/PrimaryFormParts/SongSearch/PrimaryForm.SongSearch.WordCountSearch.cs b/PrimaryFormParts/SongSearch/PrimaryForm.SongSearch.WordCountSearch.cs index 12aa9bc..1ce7734 100644 --- a/PrimaryFormParts/SongSearch/PrimaryForm.SongSearch.WordCountSearch.cs +++ b/PrimaryFormParts/SongSearch/PrimaryForm.SongSearch.WordCountSearch.cs @@ -68,7 +68,8 @@ namespace DualScreenDemo private IniData LoadConfigDataforWordCountSongs() { var parser = new FileIniDataParser(); - string iniFilePath = "config.ini"; + string iniFilePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "config.ini"); + // 使用 UTF-8 讀取 INI 檔案並解析內容 using (var reader = new StreamReader(iniFilePath, Encoding.UTF8)) @@ -579,7 +580,8 @@ namespace DualScreenDemo { // 創建 INI 解析器 var parser = new FileIniDataParser(); - string iniFilePath = "config.ini"; // 配置文件的路徑 + string iniFilePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "config.ini"); + IniData data; // 打開並讀取配置文件 @@ -625,7 +627,9 @@ namespace DualScreenDemo private void LoadPictureBoxWordCountSongCoordsFromConfig() { var parser = new FileIniDataParser(); - IniData data = parser.ReadFile("config.ini"); + string iniPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "config.ini"); + IniData data = parser.ReadFile(iniPath); + var coords = data["PictureBoxWordCountSongs"]; pictureBoxWordCountSongCoords = ( diff --git a/themes/superstar/_www/clicked-song.html b/themes/superstar/_www/clicked-song.html index cf3a6d5..a13c56b 100644 --- a/themes/superstar/_www/clicked-song.html +++ b/themes/superstar/_www/clicked-song.html @@ -17,7 +17,7 @@ margin: 20px; } .header { - background: #D32F2F; + background: #FFA500; padding: 10px 0; color: white; font-size: 24px; diff --git a/themes/superstar/_www/jgnq0yhxnfl/qrcode.png b/themes/superstar/_www/jgnq0yhxnfl/qrcode.png new file mode 100644 index 0000000000000000000000000000000000000000..b5e73490632d5d890ad7f1179bb71f59b8b3cbb9 GIT binary patch literal 3922 zcmd5_Y)x?55{a)+rY)5AM`~KaNHKvX0XHn7#95_i>q=NO)e)6&J&NoE z2d_m9C4nI|YEeaFRII2hSsHa)7n)(ao&zY!0%LN?G%*9FBh*>*8a&rF@yDKX?rWsA zTKlKn_QUXg-Fwe{&htFy+|GSZJf416&Rq(HBE4o$)qeaxL%(l+4S#=KbG94*)->;b ze3#+KHj;u5tVZysnel4$J(-So>G-R3CrMpIxf8 zDK+g{kLv+{!}Dn>P505!TF;>ST)yRuX2<;fjULzGq7!9V)p=dFXGbWq&YTugX#Rp{ zP&ZxGU6z%u!QKbkClPvynC(Ja?A09JMw*Rg-PBTasXfysW}Ew<$GP8THDr|d8@AD` z14@lCa7dnQcxCB8qo=rOK!X=Fz+Yf}Ij5xY|LXOzpKsitA=GH&0+2{)+chchg6jdm zMLU*}NRH~Gc@;%j)xe3iDnl?6+3Iwst;1kKPAhLNmh1exG4ehQCdf_*2s_lt8vW8C z&)#xFXW{rzCuK)%de|TEj~)Ca0r%Cus2m9oXu3HATAO?^5ws(VmJ?F-r(S6LLHBd{ z$xSmS|9ynkRsn(^s7yTQ$fRVhPKAqORw*5f`GHyWsTbWV&`W(R;`AANa)3t}B$N^A zUyimqU9}#|Rp@G6sW$mwzcZXWT@`=Jobc+OqYr$&pQv()S6W-Wuak3fxTp+V0!3Sf zg89GtZ@e)DdcTK|cf6m5Ky=e@7&62bqEpU&O!|$17oeK#QmBaUb&ingNmkNY^S2?z z(d&>V-@mSpum6B(^-o3q%Y;HRIKXmUcq+Mzr~T|Q?^)*ZK{)&63Ir{h3d7c=+uRfv5BauTB_nit^7in^2t+iUs`XN!;|EjN1hIzrFJ zPxlepd&}?PB&XC-;xCv{C%&K3KsOPaOeLl3Ja6mDM#tSL+GA`nBA}TN9cFJaNgq{4 zc6mrD;wjl9#Rx`{9_H+CC1=;KDw3S$nW7x*9{eOr>IhpC?J6=W7U5?DaD?;`+E)AI zD(=8HyA<2>2fUmx7!nye6v&o0G4vjg?Fc7cVztA{>i%R zHe1~E5P+StTiztpX)c)@h}UXp?kpToN=P^DjaH;IZzC4bDA(c0l;sS;2KewjCY)Sr zp1rpY3_7llA2|CZ4l+px7q1}Chr~iU5JorsVFNl#ZLK3p0%tf}8M0J1zi@9IyQviak+th6eaO@vy-ukpux25R zdEPtkmOm;N3&NAA!TQ01l!O}VX4X5)1qRyaNsBxtxZ-Y2ZmAPiP4r>f`B`D~8S?N- zA&nCC4+RP2SW|H~$)yCTue@?feua3MQ7f!LeAW_~>h%&HRH6_!u?@pkhWioh!&%j& zJXu3nzCYXyTmS-5O0H=b8f?3LWBGE!rVw%{OBJ*@=A8f-*f|MQmKuVbXq9fP06LCR z4u{DAdZ7v|jQsV~|LQGFOcd+w^9u~$B~r(M%C?R^Y7?+E^f+vVEGhq(1gA!$(`)i| z^>MBiiN*EtNL~|UkO4g2Fa#Our-1>Aiql<7eE|?DZn|%FEm#1Xp+>~{2pb7Y6FH;u zN%*4Y_;BPM6;X>!g3Oc@B|D;0(>uKVlb2F%@+kE=T!|TN*WxRgV-70Y>>t$UP-=51 zOOWi-%f7#43j5hHzd-F8^#a085mx=?JAaTVA*>N$C${%j1`mCF1u@ek+*c7WaYKcL z@+Px_TQBM;R_4u#Kc0NIkO)L$coD*7EE;<~^VvF?7~F4ho75AG7E9+XU6!kI^FbrY zM%B~NsqWZr*^7y%R!H)1bK@7AKFm)UzgWVxs5ClSzMK3L!6L9mj2kq@q2T%4Xou|e zBK~KJF1b%$GzX5LvlYbyY?d*;9q?_0eJ;sE5tzS3;!VbirVGznxB*geuA5W>nT z@3Ml8on;oUVx*c|dikvRRr9o<( z$d$@cm5)QOe`tqRJPbGKYqrP&c$ z3LT9aeMrD-=@8u=#YkotI^r;LAxkPn>!`7}XL9!(G)qW6BFhtfaW|siLISY3v?bJ{ ze`JPor_JEOs^^|^{x*d?wVG;^K`u^Nj?mt7tF-oRM!(9T`S~^@%dQ)Fhun0w#uab@}l;Ttb!e{9NnuQNU#HiG+=-|U0F + + + + + Super Star + + + + + +
金麗都 自助式KTV
+ + + + + + + + +
+
+
+
+ New Song +
+
+ Top Ranking +
+
+ Search Singer +
+
+ Search Song +
+
+ Clicked Song +
+ +
+ Sound Control +
+
+ Social Media +
+
+ Social Media +
+
+ Social Media +
+
+
+
+ + + + + \ No newline at end of file diff --git a/themes/superstar/_www/love-message.html b/themes/superstar/_www/love-message.html index 0b6bbb6..c687882 100644 --- a/themes/superstar/_www/love-message.html +++ b/themes/superstar/_www/love-message.html @@ -17,7 +17,7 @@ margin: 20px; } .header { - background: #D32F2F; + background: #FFA500; padding: 10px 0; color: white; font-size: 24px; diff --git a/themes/superstar/_www/mood-stickers.html b/themes/superstar/_www/mood-stickers.html index 35326f5..a9704a3 100644 --- a/themes/superstar/_www/mood-stickers.html +++ b/themes/superstar/_www/mood-stickers.html @@ -17,7 +17,7 @@ margin: 20px; } .header { - background: #D32F2F; + background: #FFA500; padding: 10px 0; color: white; font-size: 24px; diff --git a/themes/superstar/_www/my-favorite.html b/themes/superstar/_www/my-favorite.html index f1f8c25..b0ec477 100644 --- a/themes/superstar/_www/my-favorite.html +++ b/themes/superstar/_www/my-favorite.html @@ -17,7 +17,7 @@ margin: 20px; } .header { - background: #D32F2F; + background: #FFA500; padding: 10px 0; color: white; font-size: 24px; diff --git a/themes/superstar/_www/new-songs.html b/themes/superstar/_www/new-songs.html index 88eb526..0cb3a87 100644 --- a/themes/superstar/_www/new-songs.html +++ b/themes/superstar/_www/new-songs.html @@ -17,7 +17,7 @@ margin: 20px; } .header { - background: #D32F2F; + background: #FFA500; padding: 10px 0; color: white; font-size: 24px; diff --git a/themes/superstar/_www/profile-settings.html b/themes/superstar/_www/profile-settings.html index a2e4599..5a2ff51 100644 --- a/themes/superstar/_www/profile-settings.html +++ b/themes/superstar/_www/profile-settings.html @@ -17,7 +17,7 @@ margin: 20px; } .header { - background: #D32F2F; + background: #FFA500; padding: 10px 0; color: white; font-size: 24px; @@ -95,7 +95,7 @@