test #1

Merged
jasonchenwork merged 64 commits from test into master 2025-03-18 17:32:23 +08:00
14 changed files with 60 additions and 41 deletions
Showing only changes of commit 9b9de2f70a - Show all commits

View File

@ -15,7 +15,7 @@ namespace DualScreenDemo
try 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)) if (!File.Exists(imagePath))
{ {
Console.WriteLine("Base image not found: " + imagePath); Console.WriteLine("Base image not found: " + imagePath);
@ -81,7 +81,7 @@ namespace DualScreenDemo
using (Graphics g = Graphics.FromImage(bitmap)) using (Graphics g = Graphics.FromImage(bitmap))
{ {
g.DrawImage(baseImage, 0, 0); g.DrawImage(baseImage, new Rectangle(0, 0, bitmap.Width, bitmap.Height));
@ -97,10 +97,10 @@ namespace DualScreenDemo
} }
ResizeAndPositionControl(pictureBoxQRCode, 975, 442, 226, 274); ResizeAndPositionControl(pictureBoxQRCode, 975, 442, 225, 280);
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); Rectangle closeQRCodeCropArea = new Rectangle(198, 6, 22, 22);

View File

@ -25,6 +25,28 @@ namespace DualScreenDemo
{ {
mediaPlayer = new WindowsMediaPlayer(); mediaPlayer = new WindowsMediaPlayer();
} }
private void ConfigureImageButton(Button button, int posX, int posY, int width, int height,
string imagePath, EventHandler clickEventHandler)
{
Bitmap image = new Bitmap(imagePath);
button.SetBounds(posX, posY, image.Width, image.Height);
// 載入圖片
button.BackgroundImage = image;
button.BackgroundImageLayout = ImageLayout.Stretch;
// 按鈕樣式設定
button.FlatStyle = FlatStyle.Flat;
button.FlatAppearance.BorderSize = 0;
button.FlatAppearance.MouseDownBackColor = Color.Transparent;
button.FlatAppearance.MouseOverBackColor = Color.Transparent;
// 點擊事件
if (clickEventHandler != null)
button.Click += clickEventHandler;
this.Controls.Add(button);
}
private void InitializeSoundEffectButtons() private void InitializeSoundEffectButtons()
{ {
@ -33,9 +55,9 @@ namespace DualScreenDemo
{ {
Name = "constructionButton", Name = "constructionButton",
}; };
ConfigureButton(constructionButton, 876, 494, 148, 64, string path = Path.Combine(Application.StartupPath, @"themes\superstar\場景音效\場景音效_工地.png");
resizedNormalStateImageForSceneSoundEffects, resizedNormalStateImageForSceneSoundEffects, resizedNormalStateImageForSceneSoundEffects, ConfigureImageButton(constructionButton, 1183, 634, 148, 64,
ConstructionButton_Click); path, ConstructionButton_Click);
this.Controls.Add(constructionButton); this.Controls.Add(constructionButton);
@ -43,9 +65,9 @@ namespace DualScreenDemo
{ {
Name = "marketButton", Name = "marketButton",
}; };
ConfigureButton(marketButton, 1037, 495, 148, 63, path = Path.Combine(Application.StartupPath, @"themes\superstar\場景音效\場景音效_市場.png");
resizedNormalStateImageForSceneSoundEffects, resizedNormalStateImageForSceneSoundEffects, resizedNormalStateImageForSceneSoundEffects, ConfigureImageButton(marketButton, 1394, 634, 148, 63,
MarketButton_Click); path, MarketButton_Click);
this.Controls.Add(marketButton); this.Controls.Add(marketButton);
@ -53,9 +75,9 @@ namespace DualScreenDemo
{ {
Name = "drivingButton", Name = "drivingButton",
}; };
ConfigureButton(drivingButton, 876, 570, 148, 63, path = Path.Combine(Application.StartupPath, @"themes\superstar\場景音效\場景音效_開車.png");
resizedNormalStateImageForSceneSoundEffects, resizedNormalStateImageForSceneSoundEffects, resizedNormalStateImageForSceneSoundEffects, ConfigureImageButton(drivingButton, 1183, 720, 148, 63,
DrivingButton_Click); path, DrivingButton_Click);
this.Controls.Add(drivingButton); this.Controls.Add(drivingButton);
@ -63,9 +85,9 @@ namespace DualScreenDemo
{ {
Name = "airportButton", Name = "airportButton",
}; };
ConfigureButton(airportButton, 1037, 570, 148, 63, path = Path.Combine(Application.StartupPath, @"themes\superstar\場景音效\場景音效_機場.png");
resizedNormalStateImageForSceneSoundEffects, resizedNormalStateImageForSceneSoundEffects, resizedNormalStateImageForSceneSoundEffects, ConfigureImageButton(airportButton, 1394, 720, 148, 63,
AirportButton_Click); path, AirportButton_Click);
this.Controls.Add(airportButton); this.Controls.Add(airportButton);
@ -73,9 +95,9 @@ namespace DualScreenDemo
{ {
Name = "officeButton", Name = "officeButton",
}; };
ConfigureButton(officeButton, 876, 646, 148, 64, path = Path.Combine(Application.StartupPath, @"themes\superstar\場景音效\場景音效_辦公室.png");
resizedNormalStateImageForSceneSoundEffects, resizedNormalStateImageForSceneSoundEffects, resizedNormalStateImageForSceneSoundEffects, ConfigureImageButton(officeButton, 1183, 806, 148, 64,
OfficeButton_Click); path, OfficeButton_Click);
this.Controls.Add(officeButton); this.Controls.Add(officeButton);
@ -83,10 +105,9 @@ namespace DualScreenDemo
{ {
Name = "closeButton", Name = "closeButton",
}; };
path = Path.Combine(Application.StartupPath, @"themes\superstar\場景音效\場景音效_關閉.png");
ConfigureButton(closeButton, 1036, 646, 150, 63, ConfigureImageButton(closeButton, 1394, 806, 150, 63,
resizedNormalStateImageForSceneSoundEffects, resizedNormalStateImageForSceneSoundEffects, resizedNormalStateImageForSceneSoundEffects, path, CloseButton_Click);
CloseButton_Click);
this.Controls.Add(closeButton); this.Controls.Add(closeButton);
} }
@ -141,23 +162,7 @@ namespace DualScreenDemo
// 按鈕位置需要更改,底圖需要更改 // 按鈕位置需要更改,底圖需要更改
private void ShowImageOnPictureBoxSceneSoundEffects(string imagePath) private void ShowImageOnPictureBoxSceneSoundEffects(string imagePath)
{ {
/*
Bitmap originalImage = new Bitmap(imagePath);
Rectangle cropArea = new Rectangle(859, 427, 342, 295);
Bitmap croppedImage = CropImage(originalImage, cropArea);
pictureBoxSceneSoundEffects.Image = croppedImage;
ResizeAndPositionPictureBox(pictureBoxSceneSoundEffects, cropArea.X, cropArea.Y, cropArea.Width, cropArea.Height);
pictureBoxSceneSoundEffects.Visible = true;
*/
if (File.Exists(imagePath)) if (File.Exists(imagePath))
{ {
// 直接載入完整圖 // 直接載入完整圖
@ -167,7 +172,7 @@ namespace DualScreenDemo
pictureBoxSceneSoundEffects.Image = image; pictureBoxSceneSoundEffects.Image = image;
// 設定 PictureBox 的大小與位置(依你的需要調整) // 設定 PictureBox 的大小與位置(依你的需要調整)
ResizeAndPositionPictureBox(pictureBoxSceneSoundEffects, 773, 380, image.Width , image.Height); ResizeAndPositionPictureBox(pictureBoxSceneSoundEffects, 850, 450, image.Width , image.Height);
pictureBoxSceneSoundEffects.Visible = true; pictureBoxSceneSoundEffects.Visible = true;
} }

View File

@ -1303,7 +1303,7 @@ namespace DualScreenDemo
this.Controls.Add(serviceBellButton); this.Controls.Add(serviceBellButton);
InitializeButton(ref orderedSongsButton, ref orderedSongsNormalBackground, ref orderedSongsActiveBackground, "orderedSongsButton", 966, 97, 100, 99, "themes\\superstar\\ICON上方\\上方ICON_已點歌曲-09.png", OrderedSongsButton_Click); InitializeButton(ref orderedSongsButton, ref orderedSongsNormalBackground, ref orderedSongsActiveBackground, "orderedSongsButton", 967, 97, 99, 99, "themes\\superstar\\ICON上方\\上方ICON_已點歌曲-09.png", OrderedSongsButton_Click);
InitializeButton(ref myFavoritesButton, ref myFavoritesNormalBackground, ref myFavoritesActiveBackground, "myFavoritesButton", 1084, 97, 99, 99, "themes\\superstar\\ICON上方\\上方ICON_我的最愛-10.png", MyFavoritesButton_Click); InitializeButton(ref myFavoritesButton, ref myFavoritesNormalBackground, ref myFavoritesActiveBackground, "myFavoritesButton", 1084, 97, 99, 99, "themes\\superstar\\ICON上方\\上方ICON_我的最愛-10.png", MyFavoritesButton_Click);

View File

@ -119,3 +119,17 @@
於 DualScreenDemo.PrimaryForm.InitializeFormAndControls() 於 DualScreenDemo.PrimaryForm.InitializeFormAndControls()
於 DualScreenDemo.PrimaryForm..ctor() 於 DualScreenDemo.PrimaryForm..ctor()
於 DualScreenDemo.Program.Main() 於 DualScreenDemo.Program.Main()
[2025/5/12 上午 09:23:32] System.OutOfMemoryException: 記憶體不足。
於 System.Drawing.Bitmap.Clone(Rectangle rect, PixelFormat format)
於 DualScreenDemo.PrimaryForm.ConfigureButton(Button button, Int32 posX, Int32 posY, Int32 width, Int32 height, Bitmap normalStateImage, Bitmap mouseOverImage, Bitmap mouseDownImage, EventHandler clickEventHandler)
於 DualScreenDemo.PrimaryForm.InitializeSoundEffectButtons()
於 DualScreenDemo.PrimaryForm.InitializeFormAndControls()
於 DualScreenDemo.PrimaryForm..ctor()
於 DualScreenDemo.Program.Main()
[2025/5/12 上午 09:28:27] System.OutOfMemoryException: 記憶體不足。
於 System.Drawing.Bitmap.Clone(Rectangle rect, PixelFormat format)
於 DualScreenDemo.PrimaryForm.ConfigureButton(Button button, Int32 posX, Int32 posY, Int32 width, Int32 height, Bitmap normalStateImage, Bitmap mouseOverImage, Bitmap mouseDownImage, EventHandler clickEventHandler)
於 DualScreenDemo.PrimaryForm.InitializeSoundEffectButtons()
於 DualScreenDemo.PrimaryForm.InitializeFormAndControls()
於 DualScreenDemo.PrimaryForm..ctor()
於 DualScreenDemo.Program.Main()

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB