1218 lines
46 KiB
C#
1218 lines
46 KiB
C#
// OverlayForm/OverlayForm.Labels.cs
|
||
using System.IO;
|
||
using DBObj;
|
||
using DualScreenDemo;
|
||
namespace OverlayFormObj
|
||
{
|
||
public partial class OverlayForm
|
||
{
|
||
public Label displayLabel;
|
||
public Label songDisplayLabel;
|
||
private List<Label> displayLabels;
|
||
public Label pauseLabel;
|
||
public Label muteLabel; // New mute label
|
||
public Label originalSongLabel;
|
||
public Label nextSongLabel;
|
||
private Label serviceBellLabel;
|
||
private Label BellLabel;
|
||
private Label OriginalLabel;
|
||
public Label volumeUpLabel; // New volume up label
|
||
public Label volumeDownLabel; // New volume down label
|
||
private System.Windows.Forms.Timer BellTimer = new System.Windows.Forms.Timer();
|
||
private System.Windows.Forms.Timer OriginalTimer = new System.Windows.Forms.Timer();
|
||
private System.Windows.Forms.Timer volumeUpTimer = new System.Windows.Forms.Timer();
|
||
private System.Windows.Forms.Timer volumeDownTimer = new System.Windows.Forms.Timer();
|
||
private System.Windows.Forms.Timer micUpTimer = new System.Windows.Forms.Timer();
|
||
private System.Windows.Forms.Timer micDownTimer = new System.Windows.Forms.Timer();
|
||
public Label micUpLabel; // New microphone up label
|
||
public Label micDownLabel; // New microphone down label
|
||
public Label keyUpLabel; // New key up label
|
||
public Label keyDownLabel; // New key down label
|
||
public Label standardLabel; // New standard label
|
||
public Label keyShiftLabel; // New keyShift label
|
||
public Label squareLabel; // New square label
|
||
public Label professionalLabel; // New professional label
|
||
public Label singDownLabel; // New sing down label
|
||
public Label brightLabel; // New bright label
|
||
public Label softLabel; // New soft label
|
||
public Label autoLabel; // New auto label
|
||
public Label romanticLabel; // New romantic label
|
||
public Label dynamicLabel; // New dynamic label
|
||
public Label tintLabel; // New tint label
|
||
private System.Windows.Forms.Timer standardTimer = new System.Windows.Forms.Timer();
|
||
private System.Windows.Forms.Timer squareTimer = new System.Windows.Forms.Timer();
|
||
private System.Windows.Forms.Timer professionalTimer = new System.Windows.Forms.Timer();
|
||
private System.Windows.Forms.Timer singDownTimer = new System.Windows.Forms.Timer();
|
||
private System.Windows.Forms.Timer brightTimer = new System.Windows.Forms.Timer();
|
||
private System.Windows.Forms.Timer softTimer = new System.Windows.Forms.Timer();
|
||
private System.Windows.Forms.Timer autoTimer = new System.Windows.Forms.Timer();
|
||
private System.Windows.Forms.Timer romanticTimer = new System.Windows.Forms.Timer();
|
||
private System.Windows.Forms.Timer dynamicTimer = new System.Windows.Forms.Timer();
|
||
private System.Windows.Forms.Timer tintTimer = new System.Windows.Forms.Timer();
|
||
private System.Windows.Forms.Timer secondLineDisplayTimer = new System.Windows.Forms.Timer();
|
||
private System.Windows.Forms.Timer qrCodeTimer = new System.Windows.Forms.Timer();
|
||
private System.Windows.Forms.Timer delayTimer = new System.Windows.Forms.Timer();
|
||
|
||
|
||
private void InitializeLabels()
|
||
{
|
||
InitializeBlackBackgroundPanel();
|
||
InitializeDisplayLabel();
|
||
// InitializeSongDisplayLabel();
|
||
InitializeDisplayLabels();
|
||
InitializePauseLabel();
|
||
InitializeMuteLabel(); // Initialize the new mute label
|
||
InitializeOriginalSongLabel(); // 初始化原唱标签
|
||
InitializeServiceBellLabel();
|
||
|
||
InitializeBellLabel();
|
||
InitializeOriginalLabel();
|
||
|
||
InitializeVolumeUpLabel(); // Initialize the volume up label
|
||
InitializeVolumeDownLabel(); // Initialize the volume down label
|
||
InitializeMicUpLabel(); // Initialize the microphone up label
|
||
InitializeMicDownLabel(); // Initialize the microphone down label
|
||
InitializeKeyUpLabel(); // Initialize the key up label
|
||
InitializeKeyDownLabel(); // Initialize the key down label
|
||
InitializeStandardLabel(); // Initialize the standard label
|
||
InitializeSquareLabel(); // Initialize the square label
|
||
InitializeProfessionalLabel(); // Initialize the professional label
|
||
InitializeSingDownLabel(); // Initialize the sing down label
|
||
InitializeBrightLabel(); // Initialize the bright label
|
||
InitializeSoftLabel(); // Initialize the soft label
|
||
InitializeAutoLabel(); // Initialize the auto label
|
||
InitializeRomanticLabel(); // Initialize the romantic label
|
||
InitializeDynamicLabel(); // Initialize the dynamic label
|
||
InitializeTintLabel(); // Initialize the tint label
|
||
InitializeStandardKeyLabel();
|
||
InitializeMaleKeyLabel();
|
||
InitializeMaleKeyTimer();
|
||
InitializeFemaleKeyLabel();
|
||
InitializeNextSongLabel();
|
||
InitializeFemaleKeyTimer();
|
||
ConfigureKeyTimers();
|
||
InitializemessageLabel();
|
||
}
|
||
|
||
|
||
private void ConfigureKeyTimers()
|
||
{
|
||
OriginalTimer.Interval = 1000;
|
||
OriginalTimer.Tick += (sender, e) => {OriginalLabel.Visible = false;OriginalTimer.Stop();keepshowmic();};
|
||
|
||
BellTimer.Interval = 1000;
|
||
BellTimer.Tick += (sender, e) => {BellLabel.Visible = false;BellTimer.Stop();keepshowmic();};
|
||
|
||
volumeUpTimer.Interval = 1000;
|
||
volumeUpTimer.Tick += (sender, e) => {volumeUpLabel.Visible = false;volumeUpTimer.Stop();keepshowmic();};
|
||
|
||
volumeDownTimer.Interval = 1000;
|
||
volumeDownTimer.Tick += (sender, e) => {volumeDownLabel.Visible = false;volumeDownTimer.Stop();keepshowmic();};
|
||
|
||
maleKeyTimer.Interval = 1000;
|
||
maleKeyTimer.Tick += (sender, e) => {maleKeyLabel.Visible = false;maleKeyTimer.Stop();keepshowmic();};
|
||
|
||
femaleKeyTimer.Interval = 1000;
|
||
femaleKeyTimer.Tick += (sender, e) => {femaleKeyLabel.Visible = false;femaleKeyTimer.Stop();keepshowmic();};
|
||
|
||
micUpTimer.Interval = 1000;
|
||
micUpTimer.Tick += (sender, e) => {micUpLabel.Visible = false;micUpTimer.Stop();keepshowmic();};
|
||
|
||
micDownTimer.Interval =1000;
|
||
micDownTimer.Tick += (sender, e) =>{micDownLabel.Visible = false;micDownTimer.Stop();keepshowmic();};
|
||
|
||
brightTimer.Interval = 1000;
|
||
brightTimer.Tick += (sender, e) => {brightLabel.Visible = false;brightTimer.Stop();keepshowmic();};
|
||
|
||
softTimer.Interval = 1000;
|
||
softTimer.Tick += (sender, e) => {softLabel.Visible = false;softTimer.Stop();keepshowmic();};
|
||
|
||
autoTimer.Interval = 1000;
|
||
autoTimer.Tick += (sender, e) => {autoLabel.Visible = false;autoTimer.Stop();keepshowmic();};
|
||
|
||
romanticTimer.Interval = 1000;
|
||
romanticTimer.Tick += (sender, e) => {romanticLabel.Visible = false;romanticTimer.Stop();keepshowmic();};
|
||
|
||
dynamicTimer.Interval = 1000;
|
||
dynamicTimer.Tick += (sender, e) => {dynamicLabel.Visible = false;dynamicTimer.Stop();keepshowmic();};
|
||
|
||
tintTimer.Interval = 1000;
|
||
tintTimer.Tick += (sender, e) => {tintLabel.Visible = false;tintTimer.Stop();keepshowmic();};
|
||
|
||
standardKeyTimer.Interval = 1000;
|
||
standardKeyTimer.Tick += (sender, e) => {standardKeyLabel.Visible = false;standardKeyTimer.Stop();keepshowmic();};
|
||
|
||
messageTimer.Interval = 5000;
|
||
messageTimer.Tick += (sender, e) => {messageLabel.Visible = false;messageTimer.Stop();keepshowmic();};
|
||
|
||
keyUpTimer.Interval = 1000;
|
||
keyUpTimer.Tick += (sender, e) => {keyUpLabel.Visible = false;keyUpTimer.Stop();keepshowmic();};
|
||
|
||
keyDownTimer.Interval = 1000;
|
||
keyDownTimer.Tick += (sender, e) => {keyDownLabel.Visible = false;keyDownTimer.Stop();keepshowmic();};
|
||
|
||
secondLineDisplayTimer.Interval = 32000;
|
||
secondLineDisplayTimer.Tick += SecondLineDisplayTimer_Tick;
|
||
|
||
// Initialize Timer for hiding QR code
|
||
qrCodeTimer.Interval = 10000; // 10 seconds
|
||
qrCodeTimer.Tick += QrCodeTimer_Tick;
|
||
}
|
||
|
||
private void QrCodeTimer_Tick(object sender, EventArgs e)
|
||
{
|
||
showQRCode = false;
|
||
qrCodeTimer.Stop();
|
||
Invalidate(); // Trigger a repaint to hide the QR code
|
||
}
|
||
|
||
public void DisplayQRCodeOnOverlay(string randomFolderPath)
|
||
{
|
||
try
|
||
{
|
||
// Read the server address from the file
|
||
string serverAddressFilePath = Path.Combine(Application.StartupPath, "txt", "ip.txt");
|
||
if (!File.Exists(serverAddressFilePath))
|
||
{
|
||
Console.WriteLine("Server address file not found: " + serverAddressFilePath);
|
||
return;
|
||
}
|
||
|
||
string serverAddress = File.ReadAllText(serverAddressFilePath).Trim();
|
||
// Generate the URL content for the QR code
|
||
string qrContent = serverAddress.Contains(":") ?
|
||
String.Format("http://{0}/{1}/windows.html", serverAddress, randomFolderPath) :
|
||
String.Format("http://{0}:{1}/{2}/windows.html", serverAddress, 9090, randomFolderPath);
|
||
// Console.WriteLine("QR Content: " + qrContent);
|
||
string qrImagePath = Path.Combine(Application.StartupPath, "themes/superstar/_www", randomFolderPath, "qrcode.png");
|
||
if (!File.Exists(qrImagePath))
|
||
{
|
||
Console.WriteLine("QR code image not found: " + qrImagePath);
|
||
return;
|
||
}
|
||
for (int i = 0; i < 3; i++)
|
||
{
|
||
try
|
||
{
|
||
using (var fs = new FileStream(qrImagePath, FileMode.Open, FileAccess.Read))
|
||
{
|
||
qrCodeImage = Image.FromStream(fs);
|
||
}
|
||
break;
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
Console.WriteLine("Error loading QR code image: " + ex.Message);
|
||
System.Threading.Thread.Sleep(100); // Wait a bit before retrying
|
||
}
|
||
}
|
||
|
||
if (qrCodeImage == null)
|
||
{
|
||
Console.WriteLine("Failed to load QR code image after multiple attempts.");
|
||
return;
|
||
}
|
||
|
||
showQRCode = true;
|
||
qrCodeTimer.Start();
|
||
Invalidate(); // Trigger a repaint to show the QR code
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
Console.WriteLine("Error in DisplayQRCodeOnOverlay: " + ex.Message);
|
||
if (ex.InnerException != null)
|
||
{
|
||
Console.WriteLine("Inner exception: " + ex.InnerException.Message);
|
||
}
|
||
}
|
||
}
|
||
|
||
private void SecondLineDisplayTimer_Tick(object sender, EventArgs e)
|
||
{
|
||
secondLineDisplayTimer.Stop();
|
||
marqueeTextSecondLine = "";
|
||
marqueeXPosSecondLine = this.Width;
|
||
Invalidate();
|
||
|
||
}
|
||
|
||
private void InitializeDisplayLabel()
|
||
{
|
||
displayLabel = new Label();
|
||
displayLabel.Location = new Point(100, 50);
|
||
displayLabel.AutoSize = true;
|
||
displayLabel.ForeColor = Color.White;
|
||
displayLabel.Font = new Font("Microsoft JhengHei", 34, FontStyle.Bold);
|
||
displayLabel.BackColor = Color.Black;
|
||
this.Controls.Add(displayLabel);
|
||
displayLabel.Location = new Point(10, 56);
|
||
}
|
||
|
||
// private void InitializeSongDisplayLabel()
|
||
// {
|
||
// songDisplayLabel = new Label();
|
||
// songDisplayLabel.Location = new Point(0, 50); // 設置顯示位置
|
||
// songDisplayLabel.AutoSize = true;
|
||
// songDisplayLabel.ForeColor = Color.White;
|
||
// songDisplayLabel.Font = new Font("Microsoft JhengHei", 125, FontStyle.Bold); // 設定字體樣式
|
||
// songDisplayLabel.BackColor = Color.Black;
|
||
// this.Controls.Add(songDisplayLabel);
|
||
// }
|
||
|
||
private void InitializeDisplayLabels()
|
||
{
|
||
displayLabels = new List<Label>();
|
||
|
||
for (int i = 0; i < 6; i++) // Assuming a maximum of 6 lines
|
||
{
|
||
Label displayLabel = new Label
|
||
{
|
||
AutoSize = true,
|
||
ForeColor = Color.White,
|
||
Font = new Font("Microsoft JhengHei", 25, FontStyle.Bold), // 設定字體樣式
|
||
BackColor = Color.Transparent
|
||
};
|
||
displayLabels.Add(displayLabel);
|
||
this.Controls.Add(displayLabel);
|
||
}
|
||
}
|
||
// 播放暫停,字體大小
|
||
private void InitializePauseLabel()
|
||
{
|
||
pauseLabel = new Label();
|
||
pauseLabel.AutoSize = false;
|
||
pauseLabel.Font = new Font("Microsoft JhengHei", 75, FontStyle.Bold);
|
||
pauseLabel.BackColor = Color.Transparent;
|
||
pauseLabel.TextAlign = ContentAlignment.MiddleCenter;
|
||
pauseLabel.Size = new Size(1080, 200);
|
||
pauseLabel.Location = new Point(
|
||
(this.Width - pauseLabel.Width) / 2, // 水平居中
|
||
(this.Height - pauseLabel.Height) / 2 + 500 // 垂直居中偏下 50 像素
|
||
);
|
||
|
||
pauseLabel.Paint += (s, e) =>
|
||
{
|
||
string text = "播放暫停";
|
||
Font font = pauseLabel.Font;
|
||
Graphics g = e.Graphics;
|
||
g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
|
||
|
||
// 描邊(多次偏移繪製)
|
||
using (Brush outlineBrush = new SolidBrush(Color.Black))
|
||
{
|
||
for (int x = -2; x <= 2; x++)
|
||
{
|
||
for (int y = -2; y <= 2; y++)
|
||
{
|
||
if (x != 0 || y != 0)
|
||
{
|
||
g.DrawString(text, font, outlineBrush,
|
||
new PointF((pauseLabel.Width - g.MeasureString(text, font).Width) / 2 + x,
|
||
(pauseLabel.Height - g.MeasureString(text, font).Height) / 2 + y));
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
// 中心白色文字
|
||
using (Brush textBrush = new SolidBrush(Color.White))
|
||
{
|
||
g.DrawString(text, font, textBrush,
|
||
new PointF((pauseLabel.Width - g.MeasureString(text, font).Width) / 2,
|
||
(pauseLabel.Height - g.MeasureString(text, font).Height) / 2));
|
||
}
|
||
};
|
||
this.Controls.Add(pauseLabel);
|
||
}
|
||
|
||
// 播放靜音,字體大小
|
||
private void InitializeMuteLabel()
|
||
{
|
||
muteLabel = new Label();
|
||
muteLabel.AutoSize = false;
|
||
muteLabel.Visible = false;
|
||
muteLabel.Font = new Font("Microsoft JhengHei", 75, FontStyle.Bold);
|
||
muteLabel.BackColor = Color.Transparent;
|
||
muteLabel.TextAlign = ContentAlignment.MiddleCenter;
|
||
muteLabel.Size = new Size(1080, 200);
|
||
muteLabel.Location = new Point(
|
||
(this.Width - muteLabel.Width) / 2, // 水平居中
|
||
(this.Height - muteLabel.Height) / 2 + 250 // 垂直居中偏下 50 像素
|
||
);
|
||
|
||
muteLabel.Paint += (s, e) =>
|
||
{
|
||
string text = "【全部靜音】";
|
||
Font font = muteLabel.Font;
|
||
Graphics g = e.Graphics;
|
||
g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
|
||
|
||
// 描邊(多次偏移繪製)
|
||
using (Brush outlineBrush = new SolidBrush(Color.Black))
|
||
{
|
||
for (int x = -2; x <= 2; x++)
|
||
{
|
||
for (int y = -2; y <= 2; y++)
|
||
{
|
||
if (x != 0 || y != 0)
|
||
{
|
||
g.DrawString(text, font, outlineBrush,
|
||
new PointF((muteLabel.Width - g.MeasureString(text, font).Width) / 2 + x,
|
||
(muteLabel.Height - g.MeasureString(text, font).Height) / 2 + y));
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
// 中心白色文字
|
||
using (Brush textBrush = new SolidBrush(Color.White))
|
||
{
|
||
g.DrawString(text, font, textBrush,
|
||
new PointF((muteLabel.Width - g.MeasureString(text, font).Width) / 2,
|
||
(muteLabel.Height - g.MeasureString(text, font).Height) / 2));
|
||
}
|
||
};
|
||
this.Controls.Add(muteLabel);
|
||
}
|
||
|
||
private void InitializeServiceBellLabel()
|
||
{
|
||
|
||
serviceBellLabel = new Label
|
||
{
|
||
Text = " 服務鈴 ",
|
||
Font = new Font("Microsoft JhengHei", 34, FontStyle.Bold),
|
||
ForeColor = Color.White,
|
||
BackColor = Color.Black,
|
||
AutoSize = true,
|
||
Visible = false // 初始设置为不可见
|
||
};
|
||
serviceBellLabel.PerformLayout();
|
||
|
||
|
||
// Console.WriteLine($"初始化标签位置: {serviceBellLabel.Location}, 大小: {serviceBellLabel.Size}");
|
||
serviceBellLabel.BringToFront();
|
||
this.Controls.Add(serviceBellLabel);
|
||
this.Resize += (s, e) =>
|
||
{
|
||
serviceBellLabel.Location = new Point(this.Width - serviceBellLabel.Width - 10,56);
|
||
// Console.WriteLine($"调整标签位置: {serviceBellLabel.Location}, 大小: {serviceBellLabel.Size}");
|
||
};
|
||
|
||
}
|
||
|
||
private void InitializeOriginalSongLabel()
|
||
{
|
||
originalSongLabel = new Label
|
||
{
|
||
Text = "有人聲",
|
||
Font = new Font("Microsoft JhengHei", 34, FontStyle.Bold), // 设置字体样式
|
||
ForeColor = Color.White , // 设置文字颜色
|
||
BackColor = Color.Black,
|
||
AutoSize = true,
|
||
Visible = false // 初始设置为不可见
|
||
};
|
||
this.Controls.Add(originalSongLabel);
|
||
this.Resize += (s, e) =>
|
||
{
|
||
originalSongLabel.Location = new Point(this.Width - originalSongLabel.Width - 10, 56);
|
||
};
|
||
}
|
||
|
||
private void InitializeVolumeUpLabel()
|
||
{
|
||
volumeUpLabel = new Label
|
||
{
|
||
AutoSize = true,
|
||
ForeColor = Color.White,
|
||
Font = new Font("Microsoft JhengHei", 34, FontStyle.Bold),
|
||
BackColor = Color.Transparent,
|
||
Text = "音量 ↑",
|
||
Visible = false
|
||
};
|
||
blackBackgroundPanel.Controls.Add(volumeUpLabel);
|
||
blackBackgroundPanel.Resize += (s, e) =>
|
||
{
|
||
volumeUpLabel.Location = new Point(blackBackgroundPanel.Width - volumeUpLabel.Width - 10, 56);
|
||
};
|
||
}
|
||
private void InitializeOriginalLabel()
|
||
{
|
||
OriginalLabel = new Label
|
||
{
|
||
AutoSize = true,
|
||
ForeColor = Color.White,
|
||
Font = new Font("Microsoft JhengHei", 34, FontStyle.Bold),
|
||
BackColor = Color.Transparent,
|
||
Text = "有人聲",
|
||
Visible = false
|
||
};
|
||
blackBackgroundPanel.Controls.Add(OriginalLabel);
|
||
blackBackgroundPanel.Resize += (s, e) =>
|
||
{
|
||
OriginalLabel.Location = new Point(blackBackgroundPanel.Width - OriginalLabel.Width - 10, 56);
|
||
};
|
||
}
|
||
private void InitializeBellLabel()
|
||
{
|
||
BellLabel = new Label
|
||
{
|
||
AutoSize = true,
|
||
ForeColor = Color.White,
|
||
Font = new Font("Microsoft JhengHei", 34, FontStyle.Bold),
|
||
BackColor = Color.Transparent,
|
||
Text = "服務鈴",
|
||
Visible = false
|
||
};
|
||
blackBackgroundPanel.Controls.Add(BellLabel);
|
||
blackBackgroundPanel.Resize += (s, e) =>
|
||
{
|
||
BellLabel.Location = new Point(blackBackgroundPanel.Width - BellLabel.Width - 10, 56);
|
||
};
|
||
}
|
||
private void InitializeVolumeDownLabel()
|
||
{
|
||
volumeDownLabel = new Label
|
||
{
|
||
AutoSize = true,
|
||
ForeColor = Color.White,
|
||
Font = new Font("Microsoft JhengHei", 34, FontStyle.Bold),
|
||
BackColor = Color.Transparent,
|
||
Text = "音量 ↓",
|
||
Visible = false
|
||
};
|
||
blackBackgroundPanel.Controls.Add(volumeDownLabel);
|
||
blackBackgroundPanel.Resize += (s, e) =>
|
||
{
|
||
volumeDownLabel.Location = new Point(blackBackgroundPanel.Width - volumeDownLabel.Width - 10, 56);
|
||
};
|
||
}
|
||
private void InitializeMicUpLabel()
|
||
{
|
||
micUpLabel = new Label
|
||
{
|
||
AutoSize = true,
|
||
ForeColor = Color.White,
|
||
Font = new Font("Microsoft JhengHei", 34, FontStyle.Bold),
|
||
BackColor = Color.Transparent,
|
||
Text = "麥克風 ↑",
|
||
Visible = false
|
||
};
|
||
blackBackgroundPanel.Controls.Add(micUpLabel);
|
||
blackBackgroundPanel.Resize += (s, e) =>
|
||
{
|
||
micUpLabel.Location = new Point(blackBackgroundPanel.Width - micUpLabel.Width - 10, 56);
|
||
};
|
||
}
|
||
public Panel blackBackgroundPanel;
|
||
|
||
private void InitializeBlackBackgroundPanel()
|
||
{
|
||
blackBackgroundPanel = new Panel
|
||
{
|
||
BackColor = Color.FromArgb(255, 0, 0, 0), // 黑色背景
|
||
Size = new Size(this.Width, 120), // 高度 100 像素
|
||
Location = new Point(0, 0), // 从画面顶部开始
|
||
Anchor = AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Top // 固定顶部
|
||
};
|
||
|
||
// 設置 Paint 事件處理程序
|
||
blackBackgroundPanel.Paint += (sender, e) =>
|
||
{
|
||
using (Font largeFont = new Font("微軟正黑體", 34, FontStyle.Bold))
|
||
using (Font secondLineFont = new Font("微軟正黑體", 34, FontStyle.Bold))
|
||
using (Brush whiteBrush = new SolidBrush(Color.White))
|
||
using (Brush RedBrush = new SolidBrush(Color.Red))
|
||
using (Brush marqueeBrush = new SolidBrush(marqueeTextColor))
|
||
using (Brush backgroundBrush = new SolidBrush(Color.FromArgb(255, 0, 0, 0)))
|
||
{
|
||
// 第一行文字的代码保持不变
|
||
SizeF textSize = e.Graphics.MeasureString(marqueeText, largeFont);
|
||
float yPosition1 = 0;
|
||
e.Graphics.FillRectangle(backgroundBrush, marqueeXPos, yPosition1, textSize.Width, textSize.Height);
|
||
e.Graphics.DrawString(marqueeText, largeFont, marqueeBrush, new PointF(marqueeXPos, yPosition1));
|
||
|
||
// 修改第二行文字的部分
|
||
float yPosition2 = 56;
|
||
Rectangle clipRect = new Rectangle(
|
||
(int)(this.Width / 32), // 从1/8改成1/16(因为要居中)
|
||
(int)yPosition2,
|
||
(int)(15 * this.Width / 16), // 从3/4改成7/8
|
||
(int)textSize.Height
|
||
);
|
||
Region originalClip = e.Graphics.Clip;
|
||
e.Graphics.SetClip(clipRect);
|
||
|
||
// 获取当前应该显示的文字段落
|
||
string displayText = textSegments.Count > 0 ? textSegments[currentSegmentIndex] : marqueeTextSecondLine;
|
||
SizeF textSizeSecondLine = e.Graphics.MeasureString(displayText, secondLineFont);
|
||
float centeredXPos = (this.Width - textSizeSecondLine.Width) / 2;
|
||
e.Graphics.FillRectangle(backgroundBrush, centeredXPos, yPosition2, textSizeSecondLine.Width, textSizeSecondLine.Height);
|
||
// 系統公告塗色調整區域
|
||
e.Graphics.DrawString(displayText, secondLineFont, RedBrush, new PointF(centeredXPos, yPosition2));
|
||
|
||
// 还原裁剪区域
|
||
e.Graphics.Clip = originalClip;
|
||
|
||
}
|
||
};
|
||
|
||
this.Controls.Add(blackBackgroundPanel);
|
||
|
||
blackBackgroundPanel.SendToBack();
|
||
}
|
||
|
||
|
||
private void InitializeMicDownLabel()
|
||
{
|
||
|
||
micDownLabel = new Label
|
||
{
|
||
AutoSize = true,
|
||
ForeColor = Color.White,
|
||
Font = new Font("Microsoft JhengHei", 34, FontStyle.Bold),
|
||
BackColor = Color.Transparent,
|
||
Text = "麥克風 ↓",
|
||
Visible = false
|
||
};
|
||
blackBackgroundPanel.Controls.Add(micDownLabel);
|
||
blackBackgroundPanel.Resize += (s, e) =>
|
||
{
|
||
micDownLabel.Location = new Point(blackBackgroundPanel.Width - micDownLabel.Width - 15, 56);
|
||
};
|
||
}
|
||
|
||
|
||
private void InitializeNextSongLabel()
|
||
{
|
||
nextSongLabel = new Label
|
||
{
|
||
AutoSize = true,
|
||
ForeColor = Color.White,
|
||
Font = new Font("Microsoft JhengHei", 32, FontStyle.Regular),
|
||
BackColor = Color.Transparent,
|
||
Text = "",
|
||
Visible = true
|
||
};
|
||
blackBackgroundPanel.Controls.Add(nextSongLabel);
|
||
|
||
nextSongLabel.Location = new Point(10, 56);
|
||
}
|
||
|
||
|
||
|
||
public void UpdateNextSongLabelFromPlaylist( SongData currentPlayingSong)
|
||
{
|
||
// 获取播放列表
|
||
List<SongData> currentPlaylist = VideoPlayerForm.playingSongList ;
|
||
|
||
if (currentPlaylist == null || currentPlaylist.Count == 0)
|
||
{
|
||
nextSongLabel.Text = "目前沒有下一首,請踴躍點歌!!!";
|
||
nextSongLabel.Visible = true;
|
||
return;
|
||
}
|
||
|
||
// 找到当前歌曲的索引
|
||
int currentSongIndex = currentPlaylist.IndexOf(currentPlayingSong);
|
||
|
||
if (currentSongIndex == -1 || currentSongIndex + 1 >= currentPlaylist.Count)
|
||
{
|
||
nextSongLabel.Text = "目前沒有下一首,請踴躍點歌!!!";
|
||
}
|
||
else
|
||
{
|
||
SongData nextSong = currentPlaylist[currentSongIndex + 1];
|
||
if (!string.IsNullOrEmpty(nextSong.Artist_A))
|
||
{
|
||
nextSongLabel.Text = nextSong.next_artist_text();
|
||
}
|
||
else
|
||
{
|
||
nextSongLabel.Text = "";
|
||
}
|
||
}
|
||
|
||
nextSongLabel.Visible = !string.IsNullOrEmpty(nextSongLabel.Text); // 僅在有內容時顯示標籤
|
||
}
|
||
|
||
|
||
|
||
// 更新 nextSongLabel 標籤的文本
|
||
public void UpdateNextSongLabel(string text)
|
||
{
|
||
if (nextSongLabel == null)
|
||
{
|
||
return;
|
||
}
|
||
|
||
nextSongLabel.Text = text;
|
||
nextSongLabel.Visible = true; // 確保標籤顯示
|
||
Console.WriteLine($"更新顯示: {text}");
|
||
}
|
||
|
||
private void InitializeKeyUpLabel()
|
||
{
|
||
keyUpLabel = new Label();
|
||
keyUpLabel.AutoSize = true;
|
||
keyUpLabel.ForeColor = Color.White;
|
||
keyUpLabel.Font = new Font("Microsoft JhengHei", 34, FontStyle.Bold); // 设置字体样式
|
||
keyUpLabel.BackColor = Color.Black;
|
||
keyUpLabel.Text = "升調 1# ";
|
||
keyUpLabel.Visible = false; // 初始设置为不可见
|
||
this.Controls.Add(keyUpLabel);
|
||
this.Resize += (s, e) =>
|
||
{
|
||
keyUpLabel.Location = new Point(this.Width - keyUpLabel.Width - 10, 56);
|
||
};
|
||
}
|
||
|
||
// Initialize the key down label
|
||
private void InitializeKeyDownLabel()
|
||
{
|
||
keyDownLabel = new Label();
|
||
keyDownLabel.AutoSize = true;
|
||
keyDownLabel.ForeColor = Color.White;
|
||
keyDownLabel.Font = new Font("Microsoft JhengHei", 34, FontStyle.Bold); // 设置字体样式
|
||
keyDownLabel.BackColor = Color.Black;
|
||
keyDownLabel.Text = "降調 1# ";
|
||
keyDownLabel.Visible = false;
|
||
this.Controls.Add(keyDownLabel);
|
||
this.Resize += (s, e) =>
|
||
{
|
||
keyDownLabel.Location = new Point(this.Width - keyDownLabel.Width - 10 ,56);
|
||
};
|
||
}
|
||
|
||
|
||
private void InitializeStandardLabel()
|
||
{
|
||
standardLabel = new Label
|
||
{
|
||
AutoSize = true,
|
||
ForeColor = Color.White,
|
||
Font = new Font("Microsoft JhengHei", 34, FontStyle.Bold),
|
||
BackColor = Color.Transparent,
|
||
Text = "標準迴音",
|
||
Visible = false
|
||
};
|
||
blackBackgroundPanel.Controls.Add(standardLabel);
|
||
blackBackgroundPanel.Resize += (s, e) =>
|
||
{
|
||
standardLabel.Location = new Point(blackBackgroundPanel.Width - standardLabel.Width - 10, 56);
|
||
};
|
||
}
|
||
private void InitializeSquareLabel()
|
||
{
|
||
squareLabel = new Label
|
||
{
|
||
AutoSize = true,
|
||
ForeColor = Color.White,
|
||
Font = new Font("Microsoft JhengHei", 34, FontStyle.Bold),
|
||
BackColor = Color.Transparent,
|
||
Text = "廣場迴音",
|
||
Visible = false
|
||
};
|
||
blackBackgroundPanel.Controls.Add(squareLabel);
|
||
blackBackgroundPanel.Resize += (s, e) =>
|
||
{
|
||
squareLabel.Location = new Point(blackBackgroundPanel.Width - squareLabel.Width - 10, 56);
|
||
};
|
||
}
|
||
private void InitializeProfessionalLabel()
|
||
{
|
||
professionalLabel = new Label
|
||
{
|
||
AutoSize = true,
|
||
ForeColor = Color.White,
|
||
Font = new Font("Microsoft JhengHei", 34, FontStyle.Bold),
|
||
BackColor = Color.Transparent,
|
||
Text = "專業迴音",
|
||
Visible = false
|
||
};
|
||
blackBackgroundPanel.Controls.Add(professionalLabel);
|
||
blackBackgroundPanel.Resize += (s, e) =>
|
||
{
|
||
professionalLabel.Location = new Point(blackBackgroundPanel.Width - professionalLabel.Width - 10, 56);
|
||
};
|
||
}
|
||
private void InitializeSingDownLabel()
|
||
{
|
||
singDownLabel = new Label
|
||
{
|
||
AutoSize = true,
|
||
ForeColor = Color.White,
|
||
Font = new Font("Microsoft JhengHei", 34, FontStyle.Bold),
|
||
BackColor = Color.Transparent,
|
||
Text = "唱將迴音",
|
||
Visible = false
|
||
};
|
||
blackBackgroundPanel.Controls.Add(singDownLabel);
|
||
blackBackgroundPanel.Resize += (s, e) =>
|
||
{
|
||
singDownLabel.Location = new Point(blackBackgroundPanel.Width - singDownLabel.Width - 10, 56);
|
||
};
|
||
}
|
||
|
||
private void InitializeBrightLabel()
|
||
{
|
||
brightLabel = new Label();
|
||
brightLabel.AutoSize = true;
|
||
brightLabel.ForeColor = Color.LightYellow;
|
||
brightLabel.Font = new Font("Microsoft JhengHei", 34, FontStyle.Bold); // 设置字体样式
|
||
brightLabel.BackColor = Color.Transparent;
|
||
brightLabel.Text = " 明亮 ";
|
||
brightLabel.Visible = false; // 初始设置为不可见
|
||
this.Controls.Add(brightLabel);
|
||
this.Resize += (s, e) =>
|
||
{
|
||
brightLabel.Location = new Point(this.Width - brightLabel.Width - 10, 27);
|
||
};
|
||
}
|
||
|
||
|
||
private void InitializeSoftLabel()
|
||
{
|
||
softLabel = new Label();
|
||
softLabel.AutoSize = true;
|
||
softLabel.ForeColor = Color.LightGreen;
|
||
softLabel.Font = new Font("Microsoft JhengHei", 34, FontStyle.Bold); // 设置字体样式
|
||
softLabel.BackColor = Color.Transparent;
|
||
softLabel.Text = " 柔和 ";
|
||
softLabel.Visible = false; // 初始设置为不可见
|
||
this.Controls.Add(softLabel);
|
||
this.Resize += (s, e) =>
|
||
{
|
||
softLabel.Location = new Point(this.Width - softLabel.Width - 10,27);
|
||
};
|
||
}
|
||
|
||
// Initialize the auto label
|
||
private void InitializeAutoLabel()
|
||
{
|
||
autoLabel = new Label();
|
||
autoLabel.AutoSize = true;
|
||
autoLabel.ForeColor = Color.Cyan;
|
||
autoLabel.Font = new Font("Microsoft JhengHei", 34, FontStyle.Bold); // 设置字体样式
|
||
autoLabel.BackColor = Color.Transparent;
|
||
autoLabel.Text = " 自動 ";
|
||
autoLabel.Visible = false; // 初始设置为不可见
|
||
this.Controls.Add(autoLabel);
|
||
this.Resize += (s, e) =>
|
||
{
|
||
autoLabel.Location = new Point(this.Width - autoLabel.Width - 10, 27);
|
||
};
|
||
}
|
||
private void InitializeRomanticLabel()
|
||
{
|
||
romanticLabel = new Label();
|
||
romanticLabel.AutoSize = true;
|
||
romanticLabel.ForeColor = Color.Pink;
|
||
romanticLabel.Font = new Font("Microsoft JhengHei", 34, FontStyle.Bold); // 设置字体样式
|
||
romanticLabel.BackColor = Color.Transparent;
|
||
romanticLabel.Text = " 浪漫 ";
|
||
romanticLabel.Visible = false;
|
||
this.Controls.Add(romanticLabel);
|
||
this.Resize += (s, e) =>
|
||
{
|
||
romanticLabel.Location = new Point(this.Width - romanticLabel.Width - 10, 27);
|
||
};
|
||
}
|
||
private void InitializeDynamicLabel()
|
||
{
|
||
dynamicLabel = new Label();
|
||
dynamicLabel.AutoSize = true;
|
||
dynamicLabel.ForeColor = Color.Red;
|
||
dynamicLabel.Font = new Font("Microsoft JhengHei", 34, FontStyle.Bold); // 设置字体样式
|
||
dynamicLabel.BackColor = Color.Transparent;
|
||
dynamicLabel.Text = " 動感 ";
|
||
dynamicLabel.Visible = false; // 初始设置为不可见
|
||
this.Controls.Add(dynamicLabel);
|
||
this.Resize += (s, e) =>
|
||
{
|
||
dynamicLabel.Location = new Point(this.Width - dynamicLabel.Width - 10, 27);
|
||
};
|
||
}
|
||
|
||
|
||
// Initialize the tint label
|
||
private void InitializeTintLabel()
|
||
{
|
||
tintLabel = new Label();
|
||
tintLabel.AutoSize = true;
|
||
tintLabel.ForeColor = Color.Blue;
|
||
tintLabel.Font = new Font("Microsoft JhengHei",34, FontStyle.Bold); // 设置字体样式
|
||
tintLabel.BackColor = Color.Transparent;
|
||
tintLabel.Text = " 調色 ";
|
||
tintLabel.Visible = false;
|
||
this.Controls.Add(tintLabel);
|
||
this.Resize += (s, e) =>
|
||
{
|
||
tintLabel.Location = new Point(this.Width - tintLabel.Width - 10, 27);
|
||
};
|
||
}
|
||
// 显示服务铃标签
|
||
public void ShowServiceBellLabel()
|
||
{
|
||
whichoneshowmic();
|
||
HideAllLabels();
|
||
serviceBellLabel.Visible = true;
|
||
Console.WriteLine("服務鈴顯示: " + serviceBellLabel.Text); // 输出标签文本内容
|
||
}
|
||
|
||
public void HideServiceBellLabel()
|
||
{ /*
|
||
serviceBellLabel.Visible = false;
|
||
Console.WriteLine("服務鈴隱藏: " + serviceBellLabel.Text); // 输出标签文本内容
|
||
keepshowmic();
|
||
*/
|
||
}
|
||
|
||
// 显示标准标签
|
||
public void ShowStandardLabel()
|
||
{
|
||
HideAllLabels();
|
||
standardLabel.Visible = true;
|
||
whichoneshowmic();
|
||
standardTimer.Start();
|
||
}
|
||
public void ShowSquareLabel()
|
||
{
|
||
HideAllLabels();
|
||
squareLabel.Visible = true;
|
||
whichoneshowmic();
|
||
squareTimer.Start();
|
||
}
|
||
|
||
public void ShowProfessionalLabel()
|
||
{
|
||
HideAllLabels();
|
||
professionalLabel.Visible = true;
|
||
whichoneshowmic();
|
||
professionalTimer.Start();
|
||
}
|
||
|
||
// 显示唱將标签
|
||
public void ShowSingDownLabel()
|
||
{
|
||
HideAllLabels();
|
||
singDownLabel.Visible = true;
|
||
whichoneshowmic();
|
||
singDownTimer.Start();
|
||
}
|
||
|
||
|
||
|
||
// 显示明亮标签
|
||
public void ShowBrightLabel()
|
||
{
|
||
HideAllLabels();
|
||
brightLabel.Visible = true;
|
||
whichoneshowmic();
|
||
brightTimer.Start();
|
||
}
|
||
|
||
// 显示柔和标签
|
||
public void ShowSoftLabel()
|
||
{
|
||
|
||
HideAllLabels();
|
||
softLabel.Visible = true;
|
||
whichoneshowmic();
|
||
softTimer.Start();
|
||
}
|
||
|
||
|
||
|
||
public void ShowAutoLabel()
|
||
{
|
||
HideAllLabels();
|
||
autoLabel.Visible = true;
|
||
whichoneshowmic();
|
||
autoTimer.Start();
|
||
}
|
||
|
||
// 显示浪漫标签
|
||
public void ShowRomanticLabel()
|
||
{
|
||
|
||
HideAllLabels();
|
||
romanticLabel.Visible = true;
|
||
whichoneshowmic();
|
||
romanticTimer.Start();
|
||
}
|
||
|
||
public void ShowDynamicLabel()
|
||
{
|
||
HideAllLabels();
|
||
dynamicLabel.Visible = true;
|
||
whichoneshowmic();
|
||
dynamicTimer.Start();
|
||
}
|
||
|
||
public void ShowTintLabel()
|
||
{
|
||
HideAllLabels();
|
||
tintLabel.Visible = true;
|
||
whichoneshowmic();
|
||
tintTimer.Start();
|
||
}
|
||
|
||
private void InitializeStandardKeyLabel()
|
||
{
|
||
|
||
standardKeyLabel = new Label
|
||
{
|
||
AutoSize = true,
|
||
ForeColor = Color.White,
|
||
Font = new Font("Microsoft JhengHei", 34, FontStyle.Bold),
|
||
BackColor = Color.Black,
|
||
Text = " 標準調 ",
|
||
Visible = false
|
||
};
|
||
blackBackgroundPanel.Controls.Add(standardKeyLabel);
|
||
blackBackgroundPanel.Resize += (s, e) =>
|
||
{
|
||
standardKeyLabel.Location = new Point(blackBackgroundPanel.Width - standardKeyLabel.Width - 10, 56);
|
||
};
|
||
}
|
||
private void InitializeFemaleKeyLabel()
|
||
{
|
||
|
||
femaleKeyLabel = new Label
|
||
{
|
||
AutoSize = true,
|
||
ForeColor = Color.White,
|
||
Font = new Font("Microsoft JhengHei", 34, FontStyle.Bold),
|
||
BackColor = Color.Transparent,
|
||
Text = " 女調 ",
|
||
Visible = false
|
||
};
|
||
blackBackgroundPanel.Controls.Add(femaleKeyLabel);
|
||
blackBackgroundPanel.Resize += (s, e) =>
|
||
{
|
||
femaleKeyLabel.Location = new Point(blackBackgroundPanel.Width - femaleKeyLabel.Width - 10, 56);
|
||
};
|
||
}
|
||
private void InitializeMaleKeyLabel()
|
||
{
|
||
|
||
maleKeyLabel = new Label
|
||
{
|
||
AutoSize = true,
|
||
ForeColor = Color.White,
|
||
Font = new Font("Microsoft JhengHei", 34, FontStyle.Bold),
|
||
BackColor = Color.Transparent,
|
||
Text = " 男調 ",
|
||
Visible = false
|
||
};
|
||
blackBackgroundPanel.Controls.Add(maleKeyLabel);
|
||
blackBackgroundPanel.Resize += (s, e) =>
|
||
{
|
||
maleKeyLabel.Location = new Point(blackBackgroundPanel.Width - maleKeyLabel.Width - 10, 56);
|
||
};
|
||
}
|
||
|
||
public void ShowPauseLabel()
|
||
{
|
||
pauseLabel.Visible = true;
|
||
}
|
||
|
||
// 隐藏暂停标签
|
||
public void HidePauseLabel()
|
||
{
|
||
pauseLabel.Visible = false;
|
||
}
|
||
|
||
// 显示静音标签
|
||
public void ShowMuteLabel()
|
||
{
|
||
muteLabel.Visible = true;
|
||
}
|
||
|
||
// 隐藏静音标签
|
||
public void HideMuteLabel()
|
||
{
|
||
muteLabel.Visible = false;
|
||
}
|
||
|
||
public void ShowOriginalSongLabel(string text="有人聲")
|
||
{
|
||
HideAllLabels();
|
||
originalSongLabel.Text = text;
|
||
originalSongLabel.Visible = true;
|
||
}
|
||
|
||
public void HideOriginalSongLabel()
|
||
{
|
||
originalSongLabel.Visible = false;
|
||
keepshowmic();
|
||
}
|
||
|
||
public void ToggleOriginalSongLabel()
|
||
{
|
||
originalSongLabel.Visible = !originalSongLabel.Visible;
|
||
}
|
||
public void ShowMaleKeyLabel()
|
||
{
|
||
maleKeyLabel.Visible = true;
|
||
maleKeyTimer.Start();
|
||
}
|
||
public void ShowFemaleKeyLabel()
|
||
{
|
||
femaleKeyLabel.Visible = true;
|
||
femaleKeyTimer.Start();
|
||
}
|
||
|
||
public void ShowVolumeUpLabel()
|
||
{
|
||
volumeUpLabel.Visible = true;
|
||
volumeUpTimer.Start();
|
||
}
|
||
public void ShowServiceBell()
|
||
{
|
||
BellLabel.Visible = true;
|
||
BellTimer.Start();
|
||
|
||
}
|
||
public void ShowOriginalLabel(string text = "有人聲")
|
||
{
|
||
OriginalLabel.Text = text;
|
||
OriginalLabel.Visible = true;
|
||
OriginalTimer.Start();
|
||
|
||
}
|
||
// 显示音量-标签
|
||
public void ShowVolumeDownLabel()
|
||
{
|
||
volumeDownLabel.Visible = true;
|
||
volumeDownTimer.Start();
|
||
}
|
||
// 显示麥克風+标签
|
||
public void ShowMicUpLabel()
|
||
{
|
||
micUpLabel.Visible = true;
|
||
micUpTimer.Start();
|
||
}
|
||
|
||
// 显示麥克風-标签
|
||
public void ShowMicDownLabel()
|
||
{
|
||
micDownLabel.Visible = true;
|
||
micDownTimer.Start();
|
||
}
|
||
|
||
// 显示標準調标签
|
||
public void ShowStandardKeyLabel()
|
||
{
|
||
|
||
standardKeyLabel.Visible = true;
|
||
standardKeyTimer.Start();
|
||
|
||
}
|
||
|
||
|
||
public void ShowKeyUpLabel(string customText = "")
|
||
{
|
||
// keyUpLabel.Text = string.IsNullOrWhiteSpace(customText) ? "升 1# 調" : customText;
|
||
keyUpLabel.Text = customText;
|
||
keyUpLabel.Visible = true;
|
||
keyUpTimer.Start();
|
||
}
|
||
|
||
|
||
public void ShowKeyDownLabel(string customText = "")
|
||
{
|
||
keyDownLabel.Text = customText;
|
||
keyDownLabel.Visible = true;
|
||
keyDownTimer.Start();
|
||
}
|
||
private string switchmic = "Standard" ;
|
||
// 隐藏所有标签
|
||
public void HideAllLabels()
|
||
{
|
||
HidemicLabels();
|
||
}
|
||
public void whichoneshowmic()
|
||
{
|
||
if(singDownLabel.Visible){
|
||
switchmic="SingDown";
|
||
}else if(professionalLabel.Visible){
|
||
switchmic="Professional";
|
||
}else if(squareLabel.Visible){
|
||
switchmic="Square";
|
||
}else if(standardLabel.Visible){
|
||
switchmic="Standard";
|
||
}
|
||
}
|
||
public void keepshowmic()
|
||
{
|
||
switch (switchmic)
|
||
{
|
||
case "SingDown":
|
||
HidemicLabels();
|
||
ShowSingDownLabel();
|
||
break;
|
||
case "Professional":
|
||
HidemicLabels();
|
||
ShowProfessionalLabel();
|
||
break;
|
||
case "Square":
|
||
HidemicLabels();
|
||
ShowSquareLabel();
|
||
break;
|
||
case "Standard":
|
||
HidemicLabels();
|
||
ShowStandardLabel();
|
||
break;
|
||
default:
|
||
break;
|
||
}
|
||
}
|
||
|
||
public void HidemicLabels()
|
||
{
|
||
singDownLabel.Visible = false;
|
||
singDownTimer.Stop();
|
||
professionalLabel.Visible = false;
|
||
professionalTimer.Stop();
|
||
squareLabel.Visible = false;
|
||
squareTimer.Stop();
|
||
standardLabel.Visible = false;
|
||
standardTimer.Stop();
|
||
|
||
}
|
||
private void InitializemessageLabel()
|
||
{
|
||
messageLabel = new Label();
|
||
messageLabel.AutoSize = true;
|
||
messageLabel.ForeColor = Color.White;
|
||
messageLabel.Font = new Font("Microsoft JhengHei", 34, FontStyle.Bold);
|
||
messageLabel.BackColor = Color.Transparent;
|
||
messageLabel.Text = "";
|
||
messageLabel.Visible = false;
|
||
this.Controls.Add(messageLabel);
|
||
UpdateMessageLabelPosition();
|
||
this.Resize += (s, e) => UpdateMessageLabelPosition();
|
||
}
|
||
public void ShowmessageLabel(string customText)
|
||
{
|
||
messageLabel.Visible = true;
|
||
messageLabel.Text = customText;
|
||
messageTimer.Start();
|
||
}
|
||
|
||
// 隐藏標準調标签
|
||
public void HidemessageLabel()
|
||
{
|
||
messageLabel.Visible = false;
|
||
messageTimer.Stop();
|
||
}
|
||
private void UpdateMessageLabelPosition()
|
||
{
|
||
int yPosition = (this.Height - messageLabel.Height) / 2;
|
||
int xPosition = 10;
|
||
messageLabel.Location = new Point(xPosition, yPosition);
|
||
}
|
||
}
|
||
} |