2509011155
程式碼重構 座標資料從ini併入程式內 Media設定參數先將clock設定註解
This commit is contained in:
parent
1d9705af79
commit
9d5ab28d96
File diff suppressed because it is too large
Load Diff
@ -1,8 +1,5 @@
|
|||||||
using System.IO;
|
using System.IO;
|
||||||
using IniParser;
|
|
||||||
using IniParser.Model;
|
|
||||||
|
|
||||||
/* Song Search with ZhuYin */
|
|
||||||
namespace DualScreenDemo
|
namespace DualScreenDemo
|
||||||
{
|
{
|
||||||
public partial class PrimaryForm
|
public partial class PrimaryForm
|
||||||
@ -12,338 +9,166 @@ namespace DualScreenDemo
|
|||||||
//存放注音按鈕的陣列
|
//存放注音按鈕的陣列
|
||||||
private Button[] phoneticButtonsForSongs;
|
private Button[] phoneticButtonsForSongs;
|
||||||
//特殊功能按鈕(修改、清除、關閉)
|
//特殊功能按鈕(修改、清除、關閉)
|
||||||
|
private string[] ButtonsPhoneticSymbols = ["ㄅ","ㄉ","ㄍ","ㄐ","ㄓ","ㄗ","ㄛ","ㄡ","ㄤ","ㄧ",
|
||||||
|
"ㄆ","ㄊ","ㄎ","ㄑ","ㄔ","ㄘ","ㄜ","ㄢ","ㄦ","ㄨ",
|
||||||
|
"ㄇ","ㄋ","ㄏ","ㄒ","ㄕ","ㄙ","ㄞ","ㄣ","ㄩ",
|
||||||
|
"ㄈ","ㄌ","","ㄖ","ㄚ","ㄠ"];
|
||||||
private Button modifyButtonZhuYinSongs;
|
private Button modifyButtonZhuYinSongs;
|
||||||
private Button clearButtonZhuYinSongs;
|
private Button clearButtonZhuYinSongs;
|
||||||
private Button closeButtonZhuYinSongs;
|
private Button closeButtonZhuYinSongs;
|
||||||
//用於顯示輸入文字的輸入框
|
//用於顯示輸入文字的輸入框
|
||||||
private RichTextBox inputBoxZhuYinSongs;
|
private RichTextBox inputBoxZhuYinSongs;
|
||||||
/// <summary>
|
|
||||||
/// 注音歌曲搜尋按鈕點擊事件
|
private void InitializeButtonsForZhuYinSongs()
|
||||||
/// </summary>
|
|
||||||
private void ZhuyinSearchSongsButton_Click(object sender, EventArgs e)
|
|
||||||
{
|
{
|
||||||
//更新搜尋模式按鈕的背景圖
|
|
||||||
|
|
||||||
UpdateSongSearchBtn(zhuyinSearchSongButton,zhuyinSearchSongActiveBackground);
|
// 4. 初始化輸入框 (用於顯示使用者輸入的注音符號)
|
||||||
// 讀取 config.ini 並獲取注音圖片的路徑
|
InitializeInputBoxZhuYinSongs();
|
||||||
var configData = LoadBtnConfigData();
|
InitializeBopomofoSongsButton();
|
||||||
string imagePath = Path.Combine(serverPath, configData["ImagePaths"]["ZhuYinSongs"]);
|
InitializePhoneticSymbolBtns(pictureBoxZhuYinSongs,PhoneticButton_Click);
|
||||||
//顯示注音歌曲圖片
|
|
||||||
ShowImageOnPictureBoxZhuYinSongs(Path.Combine(serverPath, imagePath));
|
|
||||||
|
|
||||||
|
|
||||||
//設定不同模式的UI顯示
|
|
||||||
SetWordCountSongsAndButtonsVisibility(false); // 隱藏字數搜尋相關控件
|
|
||||||
SetEnglishSongsAndButtonsVisibility(false);
|
|
||||||
SetPinYinSongsAndButtonsVisibility(false);
|
|
||||||
SetHandWritingForSongsAndButtonsVisibility(false);
|
|
||||||
SetSongIDSearchAndButtonsVisibility(false);
|
|
||||||
SetZhuYinSongsAndButtonsVisibility(true);
|
|
||||||
ResetinputBox();
|
|
||||||
pictureBoxZhuYinSongs.Visible = true;
|
|
||||||
}
|
}
|
||||||
/// <summary>
|
|
||||||
/// 初始化注音按鈕 (Phonetic Buttons) 並載入其對應的圖片與座標
|
private void InitializeBopomofoSongsButton()
|
||||||
/// <para>1. 讀取 config.ini 設定檔,獲取按鈕的相關數據 (符號、座標、圖片)</para>
|
|
||||||
/// <para>2. 解析注音符號並儲存至 phoneticSymbols 陣列</para>
|
|
||||||
/// <para>3. 解析按鈕的座標資訊,存入 phoneticButtonCoords</para>
|
|
||||||
/// <para>4. 解析按鈕的圖片 (正常狀態、按下狀態、懸停狀態),存入 phoneticButtonImages。</para>
|
|
||||||
/// <para>5. 依序建立 35 個注音按鈕,並套用對應的圖片與事件處理函數。</para>
|
|
||||||
/// </summary>
|
|
||||||
private void InitializePhoneticButtonsForSongs()
|
|
||||||
{
|
{
|
||||||
// 1. 從設定檔 (config.ini) 讀取配置數據,包含按鈕座標、圖片等
|
|
||||||
var data = LoadBtnConfigData();
|
var data = LoadBtnConfigData();
|
||||||
|
|
||||||
// 2. 讀取注音符號列表,這些符號將用於顯示在按鈕上
|
modifyButtonZhuYinSongs = new Button { Name = "modifyButtonZhuYinSongs" };
|
||||||
phoneticSymbols = LoadPhoneticSymbols(data);
|
ConfigureButton(modifyButtonZhuYinSongs, 650, 275, 72, 67,
|
||||||
|
new Bitmap(Path.Combine(serverPath, data["ModifyButtonImagesZhuYin"]["normal"])),
|
||||||
|
new Bitmap(Path.Combine(serverPath, data["ModifyButtonImagesZhuYin"]["mouseOver"])),
|
||||||
|
new Bitmap(Path.Combine(serverPath, data["ModifyButtonImagesZhuYin"]["mouseDown"])),
|
||||||
|
ModifyButtonZhuYinSongs_Click);
|
||||||
|
|
||||||
// 3. 從設定檔載入 **注音按鈕的座標**,每個按鈕都有對應的 (X, Y, Width, Height)
|
pictureBoxZhuYinSongs.Controls.Add(modifyButtonZhuYinSongs);
|
||||||
phoneticButtonCoords = LoadButtonCoordinates(data, "PhoneticButtonCoordinates", 35);
|
|
||||||
|
|
||||||
// 4. 從設定檔載入 **注音按鈕的圖片**,每個按鈕都有正常、按下、懸停三種狀態
|
|
||||||
phoneticButtonImages = LoadButtonImages(data, "PhoneticButtonImages", 35);
|
|
||||||
|
|
||||||
// 5. 建立 35 個注音按鈕的陣列 (每個按鈕對應一個注音符號)
|
clearButtonZhuYinSongs = new Button { Name = "clearButtonZhuYinSongs" };
|
||||||
|
ConfigureButton(clearButtonZhuYinSongs, 8, 275, 72, 67,
|
||||||
|
new Bitmap(Path.Combine(serverPath, data["ClearButtonImagesZhuYin"]["normal"])),
|
||||||
|
new Bitmap(Path.Combine(serverPath, data["ClearButtonImagesZhuYin"]["mouseOver"])),
|
||||||
|
new Bitmap(Path.Combine(serverPath, data["ClearButtonImagesZhuYin"]["mouseDown"])),
|
||||||
|
ClearButtonZhuYinSongs_Click);
|
||||||
|
|
||||||
|
pictureBoxZhuYinSongs.Controls.Add(clearButtonZhuYinSongs);
|
||||||
|
|
||||||
|
|
||||||
|
closeButtonZhuYinSongs = new Button { Name = "closeButtonZhuYinSongs" };
|
||||||
|
ConfigureButton(closeButtonZhuYinSongs, 730, 275, 72, 67,
|
||||||
|
new Bitmap(Path.Combine(serverPath, data["CloseButtonImagesZhuYin"]["normal"])),
|
||||||
|
new Bitmap(Path.Combine(serverPath, data["CloseButtonImagesZhuYin"]["mouseOver"])),
|
||||||
|
new Bitmap(Path.Combine(serverPath, data["CloseButtonImagesZhuYin"]["mouseDown"])),
|
||||||
|
CloseButtonZhuYinSongs_Click);
|
||||||
|
|
||||||
|
pictureBoxZhuYinSongs.Controls.Add(closeButtonZhuYinSongs);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private void InitializePhoneticSymbolBtns(Control control, EventHandler handler)
|
||||||
|
{
|
||||||
phoneticButtonsForSongs = new Button[35];
|
phoneticButtonsForSongs = new Button[35];
|
||||||
|
|
||||||
// 6. 迴圈建立所有的注音按鈕
|
// 設置上排按鈕
|
||||||
for (int i = 0; i < 35; i++)
|
int x = 8;
|
||||||
|
for (int i = 0; i < 10; i++)
|
||||||
{
|
{
|
||||||
// 取得當前按鈕的圖片 (從已載入的 phoneticButtonImages 字典中獲取)
|
CreatePhoneticSymbolBtns(i, x, 65, control, handler);
|
||||||
var buttonImages = phoneticButtonImages[$"button{i}"];
|
x += 80;
|
||||||
|
}
|
||||||
|
|
||||||
// 建立單個注音按鈕,並設定其圖片與點擊事件
|
x = 8;
|
||||||
CreatePhoneticButtonForSongs(
|
for (int i = 10; i < 20; i++)
|
||||||
i, // 按鈕索引 (對應於 phoneticSymbols)
|
{
|
||||||
buttonImages.normal, // 按鈕的普通狀態圖片
|
CreatePhoneticSymbolBtns(i, x, 135, control, handler);
|
||||||
buttonImages.mouseDown, // 按下時的圖片
|
x += 80;
|
||||||
buttonImages.mouseOver // 滑鼠懸停時的圖片
|
}
|
||||||
);
|
|
||||||
|
x = 40;
|
||||||
|
for (int i = 20; i < 29; i++)
|
||||||
|
{
|
||||||
|
CreatePhoneticSymbolBtns(i, x, 205, control, handler);
|
||||||
|
x += 80;
|
||||||
|
}
|
||||||
|
// 設置下排按鈕
|
||||||
|
x = 88;
|
||||||
|
for (int i = 29; i < 32; i++)
|
||||||
|
{
|
||||||
|
CreatePhoneticSymbolBtns(i, x, 275, control, handler);
|
||||||
|
x += 80;
|
||||||
|
}
|
||||||
|
x += 80;
|
||||||
|
for (int i = 32; i < 35; i++)
|
||||||
|
{
|
||||||
|
CreatePhoneticSymbolBtns(i, x, 275, control, handler);
|
||||||
|
x += 80;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
private void CreatePhoneticSymbolBtns(int index, int x, int y, Control control, EventHandler handler)
|
||||||
/// 建立單個注音按鈕,並設定其圖片、大小、位置,以及滑鼠事件。
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="index">按鈕索引 (對應於 phoneticSymbols)</param>
|
|
||||||
/// <param name="normalImagePath">按鈕的普通狀態圖片路徑</param>
|
|
||||||
/// <param name="mouseDownImagePath">按鈕被按下時的圖片路徑</param>
|
|
||||||
/// <param name="mouseOverImagePath">滑鼠懸停時的圖片路徑</param>
|
|
||||||
private void CreatePhoneticButtonForSongs(int index, string normalImagePath, string mouseDownImagePath, string mouseOverImagePath)
|
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
// 1. 創建按鈕並初始化屬性
|
// 加載配置數據
|
||||||
|
var data = LoadBtnConfigData();
|
||||||
|
// 創建語音按鈕並設置其屬性
|
||||||
phoneticButtonsForSongs[index] = new Button
|
phoneticButtonsForSongs[index] = new Button
|
||||||
{
|
{
|
||||||
Name = $"phoneticButton_{phoneticSymbols[index]}", // 設定按鈕名稱,方便識別
|
Name = $"phoneticButtonsForSongs_{ButtonsPhoneticSymbols[index]}", // 按鈕名稱設為語音符號名稱
|
||||||
BackgroundImage = Image.FromFile(Path.Combine(serverPath, normalImagePath)), // 設定預設背景圖
|
|
||||||
BackgroundImageLayout = ImageLayout.Stretch, // 背景圖自動填滿按鈕
|
|
||||||
FlatStyle = FlatStyle.Flat, // 設定按鈕為扁平樣式
|
|
||||||
FlatAppearance = { BorderSize = 0 } // 移除按鈕的邊框
|
|
||||||
};
|
};
|
||||||
|
if (index == 31)
|
||||||
|
{
|
||||||
|
ConfigureButton(phoneticButtonsForSongs[index], x, y, 154, 67,
|
||||||
|
new Bitmap(Path.Combine(serverPath, data["PhoneticButtonImages"][$"button{index}_normal"])),
|
||||||
|
new Bitmap(Path.Combine(serverPath, data["PhoneticButtonImages"][$"button{index}_mouseOver"])),
|
||||||
|
new Bitmap(Path.Combine(serverPath, data["PhoneticButtonImages"][$"button{index}_mouseDown"])),
|
||||||
|
handler);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ConfigureButton(phoneticButtonsForSongs[index], x, y, 72, 67,
|
||||||
|
new Bitmap(Path.Combine(serverPath, data["PhoneticButtonImages"][$"button{index}_normal"])),
|
||||||
|
new Bitmap(Path.Combine(serverPath, data["PhoneticButtonImages"][$"button{index}_mouseOver"])),
|
||||||
|
new Bitmap(Path.Combine(serverPath, data["PhoneticButtonImages"][$"button{index}_mouseDown"])),
|
||||||
|
handler);
|
||||||
|
}
|
||||||
|
|
||||||
// 2. 設定按鈕的大小與位置
|
|
||||||
ResizeAndPositionButton(
|
|
||||||
phoneticButtonsForSongs[index],
|
|
||||||
phoneticButtonCoords[index].X,
|
|
||||||
phoneticButtonCoords[index].Y,
|
|
||||||
phoneticButtonCoords[index].Width,
|
|
||||||
phoneticButtonCoords[index].Height
|
|
||||||
);
|
|
||||||
|
|
||||||
// 3. 載入三種狀態的圖片
|
|
||||||
Image normalImage = Image.FromFile(Path.Combine(serverPath, normalImagePath));
|
|
||||||
Image mouseDownImage = Image.FromFile(Path.Combine(serverPath, mouseDownImagePath));
|
|
||||||
Image mouseOverImage = Image.FromFile(Path.Combine(serverPath, mouseOverImagePath));
|
|
||||||
|
|
||||||
// 4. 設定滑鼠事件,改變背景圖
|
// 設置按鈕的 Tag 屬性為對應的語音符號
|
||||||
phoneticButtonsForSongs[index].MouseDown += (s, e) => phoneticButtonsForSongs[index].BackgroundImage = mouseDownImage;
|
phoneticButtonsForSongs[index].Tag = ButtonsPhoneticSymbols[index];
|
||||||
phoneticButtonsForSongs[index].MouseUp += (s, e) => phoneticButtonsForSongs[index].BackgroundImage = normalImage;
|
|
||||||
phoneticButtonsForSongs[index].MouseEnter += (s, e) => phoneticButtonsForSongs[index].BackgroundImage = mouseOverImage;
|
|
||||||
phoneticButtonsForSongs[index].MouseLeave += (s, e) => phoneticButtonsForSongs[index].BackgroundImage = normalImage;
|
|
||||||
|
|
||||||
// 5. 設定按鈕的點擊事件 (當按下按鈕時,觸發 PhoneticButton_Click)
|
// 將按鈕添加到表單的控制項集合中
|
||||||
phoneticButtonsForSongs[index].Click += PhoneticButton_Click;
|
control.Controls.Add(phoneticButtonsForSongs[index]);
|
||||||
|
|
||||||
// 6. 存入對應的注音符號,方便之後的處理
|
|
||||||
phoneticButtonsForSongs[index].Tag = phoneticSymbols[index];
|
|
||||||
|
|
||||||
// 7. 將按鈕加入視窗
|
|
||||||
this.Controls.Add(phoneticButtonsForSongs[index]);
|
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
// 例外處理,確保按鈕建立失敗時不影響其他部分
|
|
||||||
Console.WriteLine($"Error creating button at index {index}: {ex.Message}");
|
Console.WriteLine($"Error creating button at index {index}: {ex.Message}");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 初始化注音輸入框 (RichTextBox),設定外觀、事件處理及位置大小
|
||||||
/// <summary>
|
|
||||||
/// 初始化注音輸入界面的所有按鈕和輸入框。
|
|
||||||
/// </summary>
|
|
||||||
private void InitializeButtonsForZhuYinSongs()
|
|
||||||
{
|
|
||||||
// 1. 從設定檔 (config.ini) 載入注音符號
|
|
||||||
LoadPhoneticSymbolsFromConfig();
|
|
||||||
|
|
||||||
// 2. 初始化 35 個注音按鈕
|
|
||||||
InitializePhoneticButtonsForSongs();
|
|
||||||
|
|
||||||
// 3. 初始化特殊按鈕 (例如:刪除、確定、返回按鈕)
|
|
||||||
InitializeSpecialButtonsForZhuYinSongs();
|
|
||||||
|
|
||||||
// 4. 初始化輸入框 (用於顯示使用者輸入的注音符號)
|
|
||||||
InitializeInputBoxZhuYinSongs();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 初始化注音輸入界面的特殊按鈕,包括「修改」、「清除」和「關閉」。
|
|
||||||
/// </summary>
|
|
||||||
private void InitializeSpecialButtonsForZhuYinSongs()
|
|
||||||
{
|
|
||||||
// 1. 初始化「修改」按鈕 (刪除上一個輸入的注音符號)
|
|
||||||
InitializeModifyButtonZhuYinSongs();
|
|
||||||
|
|
||||||
// 2. 初始化「清除」按鈕 (清空所有輸入內容)
|
|
||||||
InitializeClearButtonZhuYinSongs();
|
|
||||||
|
|
||||||
// 3. 初始化「關閉」按鈕 (關閉注音輸入介面)
|
|
||||||
InitializeCloseButtonZhuYinSongs();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 初始化「修改」按鈕,讓使用者可以刪除上一個輸入的注音符號。
|
|
||||||
/// </summary>
|
|
||||||
private void InitializeModifyButtonZhuYinSongs()
|
|
||||||
{
|
|
||||||
// 1. 讀取設定檔 (config.ini) 來獲取特殊按鈕的座標與圖像資訊
|
|
||||||
var data = LoadBtnConfigData();
|
|
||||||
|
|
||||||
// 2. 從設定檔讀取「修改」按鈕的座標數據
|
|
||||||
modifyButtonZhuYinCoords = LoadSpecialButtonCoordinates(data, "SpecialButtonCoordinates", "modifyButtonZhuYinSongs");
|
|
||||||
|
|
||||||
// 3. 從設定檔讀取「修改」按鈕的圖像 (Normal、MouseOver、MouseDown)
|
|
||||||
var buttonImages = LoadButtonImages(data, "ModifyButtonImagesZhuYin");
|
|
||||||
|
|
||||||
// 4. 使用座標與圖像來建立「修改」按鈕,並綁定點擊事件
|
|
||||||
modifyButtonZhuYinSongs = CreateSpecialButton(
|
|
||||||
"btnModifyZhuYinSongs", // 按鈕名稱
|
|
||||||
modifyButtonZhuYinCoords, // 按鈕座標
|
|
||||||
buttonImages.normal, // 預設 (normal) 圖像
|
|
||||||
buttonImages.mouseOver, // 滑鼠移過 (hover) 圖像
|
|
||||||
buttonImages.mouseDown, // 按下 (pressed) 圖像
|
|
||||||
ModifyButtonZhuYinSongs_Click // 綁定按鈕點擊事件
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 「修改」按鈕的點擊事件,刪除輸入框內的最後一個注音符號。
|
|
||||||
/// </summary>
|
|
||||||
private void ModifyButtonZhuYinSongs_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
// 1. 確保輸入框 (inputBoxZhuYinSongs) 存在於目前的視窗控制項中
|
|
||||||
if (this.Controls.Contains(inputBoxZhuYinSongs) && inputBoxZhuYinSongs.Text.Length > 0)
|
|
||||||
{
|
|
||||||
// 2. 刪除輸入框中的最後一個字元 (即移除最後一個注音符號)
|
|
||||||
inputBoxZhuYinSongs.Text = inputBoxZhuYinSongs.Text.Substring(0, inputBoxZhuYinSongs.Text.Length - 1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 初始化「清除」按鈕,並從設定檔載入其位置與圖片資源。
|
|
||||||
/// </summary>
|
|
||||||
private void InitializeClearButtonZhuYinSongs()
|
|
||||||
{
|
|
||||||
// 1. 從設定檔 (config.ini) 讀取配置數據
|
|
||||||
var data = LoadBtnConfigData();
|
|
||||||
|
|
||||||
// 2. 讀取「清除」按鈕的座標設定 (從 "SpecialButtonCoordinates" 內的 "clearButtonZhuYinSongs" 取得)
|
|
||||||
clearButtonZhuYinCoords = LoadSpecialButtonCoordinates(data, "SpecialButtonCoordinates", "clearButtonZhuYinSongs");
|
|
||||||
|
|
||||||
// 3. 讀取「清除」按鈕的圖片 (正常、滑鼠懸停、按下狀態)
|
|
||||||
var buttonImages = LoadButtonImages(data, "ClearButtonImagesZhuYin");
|
|
||||||
|
|
||||||
// 4. 建立「清除」按鈕,並設定對應的事件處理函式 (ClearButtonZhuYinSongs_Click)
|
|
||||||
clearButtonZhuYinSongs = CreateSpecialButton(
|
|
||||||
"btnClearZhuYinSongs", // 按鈕名稱
|
|
||||||
clearButtonZhuYinCoords, // 按鈕座標與大小
|
|
||||||
buttonImages.normal, // 正常狀態圖片
|
|
||||||
buttonImages.mouseOver, // 滑鼠懸停圖片
|
|
||||||
buttonImages.mouseDown, // 按下時圖片
|
|
||||||
ClearButtonZhuYinSongs_Click // 點擊事件處理函式
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 當使用者點擊「清除」按鈕時,將輸入框 (inputBoxZhuYinSongs) 的內容清空。
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="sender">觸發事件的按鈕。</param>
|
|
||||||
/// <param name="e">事件參數。</param>
|
|
||||||
private void ClearButtonZhuYinSongs_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
// 1. 確保視窗內包含「注音輸入框」(inputBoxZhuYinSongs),且輸入框內有文字
|
|
||||||
if (this.Controls.Contains(inputBoxZhuYinSongs) && inputBoxZhuYinSongs.Text.Length > 0)
|
|
||||||
{
|
|
||||||
// 2. 清空輸入框內容
|
|
||||||
inputBoxZhuYinSongs.Text = "";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 初始化注音輸入的關閉按鈕,從設定檔讀取按鈕座標與圖片,並設置點擊事件
|
|
||||||
/// </summary>
|
|
||||||
private void InitializeCloseButtonZhuYinSongs()
|
|
||||||
{
|
|
||||||
// 讀取設定檔數據
|
|
||||||
var data = LoadBtnConfigData();
|
|
||||||
|
|
||||||
// 從設定檔讀取關閉按鈕的座標
|
|
||||||
closeButtonZhuYinCoords = LoadSpecialButtonCoordinates(data, "SpecialButtonCoordinates", "closeButtonZhuYinSongs");
|
|
||||||
|
|
||||||
// 從設定檔讀取關閉按鈕的圖片
|
|
||||||
var buttonImages = LoadButtonImages(data, "CloseButtonImagesZhuYin");
|
|
||||||
|
|
||||||
// 創建關閉按鈕並綁定點擊事件
|
|
||||||
closeButtonZhuYinSongs = CreateSpecialButton(
|
|
||||||
"btnCloseZhuYinSongs", // 按鈕名稱
|
|
||||||
closeButtonZhuYinCoords, // 按鈕座標
|
|
||||||
buttonImages.normal, // 正常狀態圖片
|
|
||||||
buttonImages.mouseOver, // 滑鼠懸停圖片
|
|
||||||
buttonImages.mouseDown, // 按下圖片
|
|
||||||
CloseButtonZhuYinSongs_Click // 綁定點擊事件
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 關閉注音輸入介面,隱藏相關 UI 元件
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="sender">觸發事件的按鈕 (關閉按鈕)</param>
|
|
||||||
/// <param name="e">事件參數</param>
|
|
||||||
private void CloseButtonZhuYinSongs_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
// 隱藏注音輸入的圖片
|
|
||||||
pictureBoxZhuYinSongs.Visible = false;
|
|
||||||
zhuyinSearchSongButton.BackgroundImage = zhuyinSearchSongNormalBackground;
|
|
||||||
// 隱藏注音輸入的所有按鈕與介面元素
|
|
||||||
SetZhuYinSongsAndButtonsVisibility(false);
|
|
||||||
FindZhuYiSongs(); // 查詢歌曲
|
|
||||||
}
|
|
||||||
/// <summary>
|
|
||||||
/// 查詢歌曲(字數查詢),連接資料庫並執行 SQL 查詢。
|
|
||||||
/// </summary>
|
|
||||||
private void FindZhuYiSongs(){
|
|
||||||
string searchText = inputBoxZhuYinSongs.Text;
|
|
||||||
// 在這裡添加搜尋歌曲的邏輯
|
|
||||||
// 例如:根據輸入框的內容搜尋歌曲
|
|
||||||
|
|
||||||
string query = string.IsNullOrWhiteSpace(searchText)
|
|
||||||
? "SELECT * FROM song_library_cache ORDER BY `song_id` DESC LIMIT 1000;"
|
|
||||||
: $"SELECT * FROM song_library_cache WHERE `phonetic_abbr` LIKE '{searchText}%' ORDER BY `song_name`;";
|
|
||||||
|
|
||||||
var searchResults = SearchSongs_Mysql(query);
|
|
||||||
// 重置分頁
|
|
||||||
currentPage = 0;
|
|
||||||
totalPages = (int)Math.Ceiling((double)searchResults.Count / itemsPerPage);
|
|
||||||
// 更新多頁面面板的內容
|
|
||||||
multiPagePanel.currentPageIndex = 0;
|
|
||||||
multiPagePanel.LoadSongs(searchResults);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 初始化注音輸入框 (RichTextBox),設定外觀、事件處理及位置大小
|
|
||||||
/// </summary>
|
|
||||||
private void InitializeInputBoxZhuYinSongs()
|
private void InitializeInputBoxZhuYinSongs()
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
// 讀取輸入框的配置,例如字體、顏色、大小等
|
string fontName = "Times New Roman";
|
||||||
LoadInputBoxConfig();
|
float fontSize = 26;
|
||||||
|
FontStyle fontStyle = FontStyle.Regular;
|
||||||
|
Color foreColor = Color.Black;
|
||||||
|
|
||||||
// 建立注音輸入框並套用讀取到的設定
|
|
||||||
inputBoxZhuYinSongs = new RichTextBox
|
inputBoxZhuYinSongs = new RichTextBox
|
||||||
{
|
{
|
||||||
Name = "inputBoxZhuYinSongs",
|
Name = "inputBoxZhuYinSongs",
|
||||||
ForeColor = inputBoxForeColor, // 設定文字顏色
|
ForeColor = foreColor, // 設定文字顏色
|
||||||
Font = new Font(inputBoxFontName, inputBoxFontSize, inputBoxFontStyle), // 設定字體
|
Font = new Font(fontName, fontSize / 900 * Screen.PrimaryScreen.Bounds.Height, fontStyle),
|
||||||
ScrollBars = RichTextBoxScrollBars.None // 禁用滾動條
|
ScrollBars = RichTextBoxScrollBars.None // 禁用滾動條
|
||||||
};
|
};
|
||||||
|
|
||||||
// 調整輸入框大小與位置
|
// 調整輸入框大小與位置
|
||||||
ResizeAndPositionControl(inputBoxZhuYinSongs, inputBoxZhuYinCoords.X, inputBoxZhuYinCoords.Y,
|
ResizeAndPositionControl(inputBoxZhuYinSongs, 10, 12, 455, 47);
|
||||||
inputBoxZhuYinCoords.Width, inputBoxZhuYinCoords.Height);
|
|
||||||
|
|
||||||
// 將輸入框加入到 UI 控制項
|
// 將輸入框加入到 UI 控制項
|
||||||
this.Controls.Add(inputBoxZhuYinSongs);
|
pictureBoxZhuYinSongs.Controls.Add(inputBoxZhuYinSongs);
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
@ -351,85 +176,25 @@ namespace DualScreenDemo
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 存儲 PictureBoxZhuYinSongs 的座標與尺寸信息。
|
|
||||||
/// </summary>
|
|
||||||
/// <remarks>
|
|
||||||
/// 此元組包含以下四個值:
|
|
||||||
/// X:X 座標
|
|
||||||
/// , Y:Y 座標
|
|
||||||
/// , Width:寬度
|
|
||||||
/// , Height:高度
|
|
||||||
/// </remarks>
|
|
||||||
private (int X, int Y, int Width, int Height) pictureBoxZhuYinSongCoords;
|
|
||||||
|
|
||||||
/// <summary>
|
// 在 pictureBoxZhuYinSongs 上顯示指定路徑的圖片,並根據設定調整其大小與位置。
|
||||||
/// 從設定檔 (config.ini) 讀取 PictureBoxZhuYinSongs 的座標與尺寸
|
|
||||||
/// </summary>
|
|
||||||
private void LoadPictureBoxZhuYinSongCoordsFromConfig()
|
|
||||||
{
|
|
||||||
// 建立 INI 檔案解析器
|
|
||||||
var parser = new FileIniDataParser();
|
|
||||||
|
|
||||||
// 讀取 config.ini 設定檔的內容
|
|
||||||
string iniPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "img.ini");
|
|
||||||
IniData data = parser.ReadFile(iniPath);
|
|
||||||
|
|
||||||
|
|
||||||
// 取得 "PictureBoxZhuYinSongs" 段落的設定數據
|
|
||||||
var coords = data["PictureBoxZhuYinSongs"];
|
|
||||||
|
|
||||||
// 解析座標與尺寸,並存入 pictureBoxZhuYinSongCoords
|
|
||||||
pictureBoxZhuYinSongCoords = (
|
|
||||||
int.Parse(coords["X"]), // 讀取 X 座標
|
|
||||||
int.Parse(coords["Y"]), // 讀取 Y 座標
|
|
||||||
int.Parse(coords["Width"]), // 讀取寬度
|
|
||||||
int.Parse(coords["Height"]) // 讀取高度
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 在 pictureBoxZhuYinSongs 上顯示指定路徑的圖片,並根據設定調整其大小與位置。
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="imagePath">要顯示的圖片檔案路徑</param>
|
|
||||||
private void ShowImageOnPictureBoxZhuYinSongs(string imagePath)
|
private void ShowImageOnPictureBoxZhuYinSongs(string imagePath)
|
||||||
{
|
{
|
||||||
// 從 config.ini 讀取 PictureBox 的座標與尺寸
|
|
||||||
LoadPictureBoxZhuYinSongCoordsFromConfig();
|
|
||||||
|
|
||||||
// 讀取圖片檔案並載入 Bitmap 物件
|
// 讀取圖片檔案並載入 Bitmap 物件
|
||||||
Bitmap originalImage = new Bitmap(imagePath);
|
Bitmap originalImage = new Bitmap(imagePath);
|
||||||
|
|
||||||
// 設定圖片顯示區域,使用從設定檔讀取的座標與尺寸
|
|
||||||
Rectangle displayArea = new Rectangle(
|
|
||||||
pictureBoxZhuYinSongCoords.X,
|
|
||||||
pictureBoxZhuYinSongCoords.Y,
|
|
||||||
pictureBoxZhuYinSongCoords.Width,
|
|
||||||
pictureBoxZhuYinSongCoords.Height
|
|
||||||
);
|
|
||||||
|
|
||||||
// 設定 PictureBox 的圖片
|
// 設定 PictureBox 的圖片
|
||||||
pictureBoxZhuYinSongs.Image = originalImage;
|
pictureBoxZhuYinSongs.Image = originalImage;
|
||||||
|
|
||||||
// 調整 PictureBox 的大小與位置,使其符合設定
|
// 調整 PictureBox 的大小與位置,使其符合設定
|
||||||
ResizeAndPositionPictureBox(
|
ResizeAndPositionPictureBox(pictureBoxZhuYinSongs,390, 360, 808, 356);
|
||||||
pictureBoxZhuYinSongs,
|
|
||||||
displayArea.X,
|
|
||||||
displayArea.Y,
|
|
||||||
displayArea.Width,
|
|
||||||
displayArea.Height
|
|
||||||
);
|
|
||||||
|
|
||||||
// 顯示 PictureBox
|
// 顯示 PictureBox
|
||||||
pictureBoxZhuYinSongs.Visible = true;
|
pictureBoxZhuYinSongs.Visible = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
// 設定注音歌曲相關的 PictureBox、按鈕和輸入框的可見性。
|
||||||
/// 設定注音歌曲相關的 PictureBox、按鈕和輸入框的可見性。
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="isVisible">若為 true,則顯示這些控件;否則隱藏。</param>
|
|
||||||
private void SetZhuYinSongsAndButtonsVisibility(bool isVisible)
|
private void SetZhuYinSongsAndButtonsVisibility(bool isVisible)
|
||||||
{
|
{
|
||||||
// 定義要執行的操作,設定各控件的可見性
|
// 定義要執行的操作,設定各控件的可見性
|
||||||
@ -439,101 +204,10 @@ namespace DualScreenDemo
|
|||||||
{
|
{
|
||||||
// 暫停佈局邏輯,防止在調整控件可見性時觸發不必要的佈局計算,提升性能
|
// 暫停佈局邏輯,防止在調整控件可見性時觸發不必要的佈局計算,提升性能
|
||||||
SuspendLayout();
|
SuspendLayout();
|
||||||
|
if (isVisible) SetUIVisible(pictureBoxZhuYinSongs);
|
||||||
// 檢查並設定 pictureBoxZhuYinSongs 的可見性
|
else CloseUI(pictureBoxZhuYinSongs);
|
||||||
if (pictureBoxZhuYinSongs == null)
|
|
||||||
{
|
|
||||||
Console.WriteLine("pictureBoxZhuYinSongs is null");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
pictureBoxZhuYinSongs.Visible = isVisible;
|
|
||||||
if (isVisible) pictureBoxZhuYinSongs.BringToFront();
|
|
||||||
}
|
|
||||||
|
|
||||||
// 檢查並設定 phoneticButtonsForSongs 陣列中每個按鈕的可見性
|
|
||||||
if (phoneticButtonsForSongs == null)
|
|
||||||
{
|
|
||||||
Console.WriteLine("phoneticButtonsForSongs is null");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
foreach (var button in phoneticButtonsForSongs)
|
|
||||||
{
|
|
||||||
if (button == null)
|
|
||||||
{
|
|
||||||
Console.WriteLine("One of the phoneticButtonsForSongs is null");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
button.Visible = isVisible;
|
|
||||||
if (isVisible) button.BringToFront();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 檢查並設定 modifyButtonZhuYinSongs 的可見性
|
|
||||||
if (modifyButtonZhuYinSongs == null)
|
|
||||||
{
|
|
||||||
Console.WriteLine("modifyButtonZhuYinSongs is null");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
modifyButtonZhuYinSongs.Visible = isVisible;
|
|
||||||
if (isVisible) modifyButtonZhuYinSongs.BringToFront();
|
|
||||||
}
|
|
||||||
|
|
||||||
// 檢查並設定 clearButtonZhuYinSongs 的可見性
|
|
||||||
if (clearButtonZhuYinSongs == null)
|
|
||||||
{
|
|
||||||
Console.WriteLine("clearButtonZhuYinSongs is null");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
clearButtonZhuYinSongs.Visible = isVisible;
|
|
||||||
if (isVisible) clearButtonZhuYinSongs.BringToFront();
|
|
||||||
}
|
|
||||||
|
|
||||||
// 檢查並設定 closeButtonZhuYinSongs 的可見性
|
|
||||||
if (closeButtonZhuYinSongs == null)
|
|
||||||
{
|
|
||||||
Console.WriteLine("closeButtonZhuYinSongs is null");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
closeButtonZhuYinSongs.Visible = isVisible;
|
|
||||||
if (isVisible) closeButtonZhuYinSongs.BringToFront();
|
|
||||||
}
|
|
||||||
|
|
||||||
// 檢查並設定 inputBoxZhuYinSongs 的可見性
|
|
||||||
if (inputBoxZhuYinSongs == null)
|
|
||||||
{
|
|
||||||
Console.WriteLine("inputBoxZhuYinSongs is null");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
inputBoxZhuYinSongs.Visible = isVisible;
|
|
||||||
if (isVisible) inputBoxZhuYinSongs.BringToFront();
|
|
||||||
}
|
|
||||||
|
|
||||||
// 恢復佈局邏輯,允許佈局計算
|
|
||||||
ResumeLayout();
|
ResumeLayout();
|
||||||
// 強制控件立即執行佈局邏輯,確保佈局更新立即生效
|
|
||||||
PerformLayout();
|
PerformLayout();
|
||||||
|
|
||||||
// 刷新各控件,確保其狀態立即更新
|
|
||||||
pictureBoxZhuYinSongs?.Refresh();
|
|
||||||
if (phoneticButtonsForSongs != null)
|
|
||||||
{
|
|
||||||
foreach (var button in phoneticButtonsForSongs)
|
|
||||||
{
|
|
||||||
button?.Refresh();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
modifyButtonZhuYinSongs?.Refresh();
|
|
||||||
clearButtonZhuYinSongs?.Refresh();
|
|
||||||
closeButtonZhuYinSongs?.Refresh();
|
|
||||||
inputBoxZhuYinSongs?.Refresh();
|
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
@ -553,5 +227,77 @@ namespace DualScreenDemo
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void ZhuyinSearchSongsButton_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
//更新搜尋模式按鈕的背景圖
|
||||||
|
|
||||||
|
UpdateSongSearchBtn(zhuyinSearchSongButton, zhuyinSearchSongActiveBackground);
|
||||||
|
// 讀取 config.ini 並獲取注音圖片的路徑
|
||||||
|
var configData = LoadBtnConfigData();
|
||||||
|
string imagePath = Path.Combine(serverPath, configData["ImagePaths"]["ZhuYinSongs"]);
|
||||||
|
//顯示注音歌曲圖片
|
||||||
|
ShowImageOnPictureBoxZhuYinSongs(Path.Combine(serverPath, imagePath));
|
||||||
|
|
||||||
|
|
||||||
|
//設定不同模式的UI顯示
|
||||||
|
SetWordCountSongsAndButtonsVisibility(false); // 隱藏字數搜尋相關控件
|
||||||
|
SetEnglishSongsAndButtonsVisibility(false);
|
||||||
|
SetPinYinSongsAndButtonsVisibility(false);
|
||||||
|
SetHandWritingForSongsAndButtonsVisibility(false);
|
||||||
|
SetSongIDSearchAndButtonsVisibility(false);
|
||||||
|
SetZhuYinSongsAndButtonsVisibility(true);
|
||||||
|
ResetinputBox();
|
||||||
|
pictureBoxZhuYinSongs.Visible = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ModifyButtonZhuYinSongs_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
// 1. 確保輸入框 (inputBoxZhuYinSongs) 存在於目前的視窗控制項中
|
||||||
|
if (pictureBoxZhuYinSongs.Controls.Contains(inputBoxZhuYinSongs) && inputBoxZhuYinSongs.Text.Length > 0)
|
||||||
|
{
|
||||||
|
// 2. 刪除輸入框中的最後一個字元 (即移除最後一個注音符號)
|
||||||
|
inputBoxZhuYinSongs.Text = inputBoxZhuYinSongs.Text.Substring(0, inputBoxZhuYinSongs.Text.Length - 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ClearButtonZhuYinSongs_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
// 1. 確保視窗內包含「注音輸入框」(inputBoxZhuYinSongs),且輸入框內有文字
|
||||||
|
if (pictureBoxZhuYinSongs.Controls.Contains(inputBoxZhuYinSongs) && inputBoxZhuYinSongs.Text.Length > 0)
|
||||||
|
{
|
||||||
|
// 2. 清空輸入框內容
|
||||||
|
inputBoxZhuYinSongs.Text = "";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void CloseButtonZhuYinSongs_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
// 隱藏注音輸入的圖片
|
||||||
|
pictureBoxZhuYinSongs.Visible = false;
|
||||||
|
zhuyinSearchSongButton.BackgroundImage = zhuyinSearchSongNormalBackground;
|
||||||
|
// 隱藏注音輸入的所有按鈕與介面元素
|
||||||
|
SetZhuYinSongsAndButtonsVisibility(false);
|
||||||
|
FindZhuYiSongs(); // 查詢歌曲
|
||||||
|
}
|
||||||
|
|
||||||
|
private void FindZhuYiSongs()
|
||||||
|
{
|
||||||
|
string searchText = inputBoxZhuYinSongs.Text;
|
||||||
|
// 在這裡添加搜尋歌曲的邏輯
|
||||||
|
// 例如:根據輸入框的內容搜尋歌曲
|
||||||
|
|
||||||
|
string query = string.IsNullOrWhiteSpace(searchText)
|
||||||
|
? "SELECT * FROM song_library_cache ORDER BY `song_id` DESC LIMIT 1000;"
|
||||||
|
: $"SELECT * FROM song_library_cache WHERE `phonetic_abbr` LIKE '{searchText}%' ORDER BY `song_name`;";
|
||||||
|
|
||||||
|
var searchResults = SearchSongs_Mysql(query);
|
||||||
|
// 重置分頁
|
||||||
|
currentPage = 0;
|
||||||
|
totalPages = (int)Math.Ceiling((double)searchResults.Count / itemsPerPage);
|
||||||
|
// 更新多頁面面板的內容
|
||||||
|
multiPagePanel.currentPageIndex = 0;
|
||||||
|
multiPagePanel.LoadSongs(searchResults);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -98,13 +98,13 @@ namespace DualScreenDemo.Services
|
|||||||
private Media addMediaOption(Media media, int audioTrackIndex)
|
private Media addMediaOption(Media media, int audioTrackIndex)
|
||||||
{
|
{
|
||||||
media.AddOption(":avcodec-hw=dxva2");
|
media.AddOption(":avcodec-hw=dxva2");
|
||||||
media.AddOption(":drop-late-frames");
|
|
||||||
media.AddOption(":audio-output=directsound");
|
media.AddOption(":audio-output=directsound");
|
||||||
|
media.AddOption(":drop-late-frames");
|
||||||
media.AddOption(":network-caching=300");
|
media.AddOption(":network-caching=300");
|
||||||
media.AddOption(":live-caching=300");
|
media.AddOption(":live-caching=300");
|
||||||
media.AddOption(":file-caching=300");
|
media.AddOption(":file-caching=300");
|
||||||
media.AddOption(":clock-jitter=0");
|
// media.AddOption(":clock-jitter=0");
|
||||||
media.AddOption(":clock-synchro=0");
|
// media.AddOption(":clock-synchro=0");
|
||||||
media.AddOption($":audio-track={audioTrackIndex}");
|
media.AddOption($":audio-track={audioTrackIndex}");
|
||||||
return media;
|
return media;
|
||||||
}
|
}
|
||||||
|
87
img.ini
87
img.ini
@ -388,73 +388,6 @@ WordCountSongs = themes\superstar\button\4.查詢\4.歌名查詢按鍵\4.歌名
|
|||||||
WordCountSingers = themes\superstar\button\4.查詢\3.歌星查詢按鍵\3.歌星查詢(字數按鍵)_背景.png
|
WordCountSingers = themes\superstar\button\4.查詢\3.歌星查詢按鍵\3.歌星查詢(字數按鍵)_背景.png
|
||||||
SongIDSearch = themes\superstar\button\4.查詢\4.歌名查詢按鍵\4.歌名查詢(編號按鍵)_背景.png
|
SongIDSearch = themes\superstar\button\4.查詢\4.歌名查詢按鍵\4.歌名查詢(編號按鍵)_背景.png
|
||||||
|
|
||||||
[PictureBoxZhuYinSingers]
|
|
||||||
X = 390
|
|
||||||
Y = 354
|
|
||||||
Width = 808
|
|
||||||
Height = 356
|
|
||||||
|
|
||||||
[PictureBoxZhuYinSongs]
|
|
||||||
X = 390
|
|
||||||
Y = 350
|
|
||||||
Width = 808
|
|
||||||
Height = 356
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
[PhoneticSymbols]
|
|
||||||
Symbols=ㄅ,ㄉ,ㄍ,ㄐ,ㄓ,ㄗ,ㄛ,ㄡ,ㄤ,ㄧ,ㄆ,ㄊ,ㄎ,ㄑ,ㄔ,ㄘ,ㄜ,ㄢ,ㄦ,ㄨ,ㄇ,ㄋ,ㄏ,ㄒ,ㄕ,ㄙ,ㄞ,ㄣ,ㄩ,ㄈ,ㄌ, ,ㄖ,ㄚ,ㄠ
|
|
||||||
|
|
||||||
[PhoneticButtonCoordinates]
|
|
||||||
button0 = 341,418,71,66
|
|
||||||
button1 = 406,418,71,66
|
|
||||||
button2 = 484,418,71,66
|
|
||||||
button3 = 562,418,71,66
|
|
||||||
button4 = 640,418,71,66
|
|
||||||
button5 = 718,417,71,66
|
|
||||||
button6 = 795,418,71,66
|
|
||||||
button7 = 873,418,71,66
|
|
||||||
button8 = 951,418,71,66
|
|
||||||
button9 = 1030,418,71,66
|
|
||||||
button10 = 1109,418,71,66
|
|
||||||
button11 = 406,489,71,66
|
|
||||||
button12 = 484,489,71,66
|
|
||||||
button13 = 562,489,71,66
|
|
||||||
button14 = 640,489,71,66
|
|
||||||
button15 = 718,489,71,66
|
|
||||||
button16 = 795,489,71,66
|
|
||||||
button17 = 873,489,71,66
|
|
||||||
button18 = 951,489,71,66
|
|
||||||
button19 = 1030,489,71,66
|
|
||||||
button20 = 1109,489,71,66
|
|
||||||
button21 = 446,561,71,66
|
|
||||||
button22 = 524,561,71,66
|
|
||||||
button23 = 602,561,71,66
|
|
||||||
button24 = 680,561,71,66
|
|
||||||
button25 = 758,561,71,66
|
|
||||||
button26 = 836,561,71,66
|
|
||||||
button27 = 914,561,71,66
|
|
||||||
button28 = 992,561,71,66
|
|
||||||
button29 = 1070,561,71,66
|
|
||||||
button30 = 484,632,71,66
|
|
||||||
button31 = 562,632,71,66
|
|
||||||
button32 = 640,632,153,66
|
|
||||||
button33 = 800,632,71,66
|
|
||||||
button34 = 878,632,71,66
|
|
||||||
button35 = 956,632,71,66
|
|
||||||
|
|
||||||
[SpecialButtonCoordinates]
|
|
||||||
modifyButtonZhuYinSingers = 1034,632,71,66
|
|
||||||
clearButtonZhuYinSingers = 409,632,71,66
|
|
||||||
closeButtonZhuYinSingers = 1112,632,71,66
|
|
||||||
modifyButtonZhuYinSongs =1035,632,71,66
|
|
||||||
clearButtonZhuYinSongs = 408,632,71,66
|
|
||||||
closeButtonZhuYinSongs = 1114,632,71,66
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
[ModifyButtonImagesZhuYin]
|
[ModifyButtonImagesZhuYin]
|
||||||
normal = themes\superstar\button\4.查詢\3.歌星查詢按鍵\3.歌星查詢(拼音按鍵)_←.png
|
normal = themes\superstar\button\4.查詢\3.歌星查詢按鍵\3.歌星查詢(拼音按鍵)_←.png
|
||||||
@ -471,16 +404,7 @@ normal = themes\superstar\button\4.查詢\3.歌星查詢按鍵\3.歌星查詢(
|
|||||||
mouseOver = themes\superstar\button\4.查詢\3.歌星查詢按鍵\3.歌星查詢(注音按鍵)_關閉.png
|
mouseOver = themes\superstar\button\4.查詢\3.歌星查詢按鍵\3.歌星查詢(注音按鍵)_關閉.png
|
||||||
mouseDown = themes\superstar\button\4.查詢\3.歌星查詢按鍵\3.歌星查詢(注音按鍵)_關閉 複本.png
|
mouseDown = themes\superstar\button\4.查詢\3.歌星查詢按鍵\3.歌星查詢(注音按鍵)_關閉 複本.png
|
||||||
|
|
||||||
[InputBoxZhuYinSingers]
|
|
||||||
|
|
||||||
X = 408
|
|
||||||
Y = 361
|
|
||||||
Width = 444
|
|
||||||
Height = 47
|
|
||||||
FontName = 微軟正黑體
|
|
||||||
FontSize = 26
|
|
||||||
FontStyle = Regular
|
|
||||||
ForeColor = Black
|
|
||||||
|
|
||||||
[PhoneticButtonImages]
|
[PhoneticButtonImages]
|
||||||
button0_normal = themes\superstar\button\4.查詢\3.歌星查詢按鍵\3.歌星查詢(注音按鍵)_ㄅ.png
|
button0_normal = themes\superstar\button\4.查詢\3.歌星查詢按鍵\3.歌星查詢(注音按鍵)_ㄅ.png
|
||||||
@ -835,17 +759,6 @@ normal = themes\superstar\button\4.查詢\3.歌星查詢按鍵\3.歌星查詢(
|
|||||||
mouseOver = themes\superstar\button\4.查詢\3.歌星查詢按鍵\3.歌星查詢(手寫按鍵)_關閉.png
|
mouseOver = themes\superstar\button\4.查詢\3.歌星查詢按鍵\3.歌星查詢(手寫按鍵)_關閉.png
|
||||||
mouseDown = themes\superstar\button\4.查詢\3.歌星查詢按鍵\3.歌星查詢(手寫按鍵)_關閉 複本.png
|
mouseDown = themes\superstar\button\4.查詢\3.歌星查詢按鍵\3.歌星查詢(手寫按鍵)_關閉 複本.png
|
||||||
|
|
||||||
[InputBoxZhuYinSongs]
|
|
||||||
X=150
|
|
||||||
Y=264
|
|
||||||
Width=596
|
|
||||||
Height=63
|
|
||||||
FontName=微軟正黑體
|
|
||||||
FontSize=26
|
|
||||||
FontStyle=Bold
|
|
||||||
ForeColor=Black
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
[NumberWordCountButtonImages]
|
[NumberWordCountButtonImages]
|
||||||
button0_normal = themes\superstar\button\4.查詢\4.歌名查詢按鍵\4.歌名查詢(字數按鍵)_1.png
|
button0_normal = themes\superstar\button\4.查詢\4.歌名查詢按鍵\4.歌名查詢(字數按鍵)_1.png
|
||||||
|
Loading…
x
Reference in New Issue
Block a user