C#學習筆記 鬧鐘程式 完成篇 (Ver1.01)
鬧鐘程式的主要程式碼請參考之前的文章: 小屋內關於鬧鐘程式文章連結
本篇僅提供更新後1.01版的程式下載及更新細節.
鬧鐘程式(ver1.01)下載
載點
解壓縮後點擊執行即可.
如有使用上問題, 煩請回報, 也歡迎提供意見 謝謝.
更新細節
1. 停止鬧鈴
當鬧鈴在響時, 點擊設定時間可以直接關閉鬧鈴. (這其實在一開始就應該先想到了 昏)
System.Media.SoundPlayer Belling = newSystem.Media.SoundPlayer();
//播放
Belling.Play();
//停止
Belling.Stop();
2.
流程因為加入了停止鬧鈴的功能, 流程也會有些許變更, 增加了Timer4. Timer4的主要作用, 是當鬧鈴播放完畢後, 將時間的設定功能還原. 所以恢復設定是根據(1)使用者關閉或(2)音樂播放完畢.
3.
計算音樂長度音樂的長度是決定Timer4何時將設定時間還原. 原來我的想法是每秒去檢查音樂是否播放, 如沒有播放了, 則回復設定時間為"不啓動". 但後來在爬文中找到了可以計算音樂長度的方法, 其實是把人家寫的東西拿來用拉. . .
該工具實在異常強大好用, 這裡提供網址給大家參考
NAudio下載後在參考的地方加入(如圖). (我是有將檔案也放在debug的資料夾)
接著在命名空間加入
: using NAudio.Wave;最後寫入方法()就可以使用了.
public static TimeSpanGetWavFileDuration(string fileName) {
WaveFileReader wf = new WaveFileReader(fileName);
return wf.TotalTime;
}
//Timer4計算時間的範例
double GetLength;
TimeSpan SoundLength =GetWavFileDuration("Alarm.wav");
GetLength =SoundLength.Ticks;
timer4.Interval = Convert.ToInt32(GetLength / 10000);
4.
移掉Windows框架原來是有Windows框架
拿掉Windows框架
this.FormBorderStyle= FormBorderStyle.None;
5.
滑鼠移動框架沒有了Windows的框架後, 是沒有辦法移動的, 所以要在Form的MouseDown, MouseUp和MouseMove加入程式碼.
先前
文章滑鼠事件寫的程式碼, 用在Form上一直失敗, 有點挫敗感! 後來網路上爬文取得了一個較易理解的作法如下.
原則上也是先記下滑鼠移動前的位置(MouseDown),接著在MouseMove時減去移動X和Y.
bool MouseMoveFlag = false;
private Point MouseLocation;
private voidFM_DigitalAlarm_MouseDown(object sender, MouseEventArgs e)
{
MouseMoveFlag = true;
MouseLocation.X = e.X;
MouseLocation.Y = e.Y;
}
private voidFM_DigitalAlarm_MouseUp(object sender, MouseEventArgs e)
{
MouseMoveFlag = false;
}
private voidFM_DigitalAlarm_MouseMove(object sender, MouseEventArgs e)
{
if (MouseMoveFlag)
{
Point CurrentLocation = Control.MousePosition;
CurrentLocation.Y = (CurrentLocation.Y -MouseLocation.Y);
CurrentLocation.X = (CurrentLocation.X -MouseLocation.X);
this.Location= CurrentLocation;
}
}
接下來的計劃. . .