您好R大 小弟目前踏入C# 剛好GOOGLE到您的小屋,想請問是否可提供原始檔,方便小弟學習呢?純學習,不做其他用途使用 感謝您^^
C#學習筆記 鬧鐘程式 完成篇 (Ver1.01)
鬧鐘程式的主要程式碼請參考之前的文章: 小屋內關於鬧鐘程式文章連結
本篇僅提供更新後1.01版的程式下載及更新細節.
鬧鐘程式(ver1.01)下載
載點
解壓縮後點擊執行即可.
如有使用上問題, 煩請回報, 也歡迎提供意見 謝謝.
更新細節
1. 停止鬧鈴
當鬧鈴在響時, 點擊設定時間可以直接關閉鬧鈴. (這其實在一開始就應該先想到了 昏)
System.Media.SoundPlayer Belling = newSystem.Media.SoundPlayer();
2. 流程
因為加入了停止鬧鈴的功能, 流程也會有些許變更, 增加了Timer4. Timer4的主要作用, 是當鬧鈴播放完畢後, 將時間的設定功能還原. 所以恢復設定是根據(1)使用者關閉或(2)音樂播放完畢.

3. 計算音樂長度
音樂的長度是決定Timer4何時將設定時間還原. 原來我的想法是每秒去檢查音樂是否播放, 如沒有播放了, 則回復設定時間為"不啓動". 但後來在爬文中找到了可以計算音樂長度的方法, 其實是把人家寫的東西拿來用拉. . .
該工具實在異常強大好用, 這裡提供網址給大家參考 NAudio
下載後在參考的地方加入(如圖). (我是有將檔案也放在debug的資料夾)

接著在命名空間加入: using NAudio.Wave;

最後寫入方法()就可以使用了.
public static TimeSpanGetWavFileDuration(string fileName)
//Timer4計算時間的範例
4. 移掉Windows框架
原來是有Windows框架

拿掉Windows框架
this.FormBorderStyle= FormBorderStyle.None;
5. 滑鼠移動框架
沒有了Windows的框架後, 是沒有辦法移動的, 所以要在Form的MouseDown, MouseUp和MouseMove加入程式碼.
先前文章滑鼠事件寫的程式碼, 用在Form上一直失敗, 有點挫敗感! 後來網路上爬文取得了一個較易理解的作法如下.
原則上也是先記下滑鼠移動前的位置(MouseDown),接著在MouseMove時減去移動X和Y.
接下來的計劃. . .
鬧鐘程式的主要程式碼請參考之前的文章: 小屋內關於鬧鐘程式文章連結
本篇僅提供更新後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;
}
}
接下來的計劃. . .
- 看能不能改美圖形鋸齒的問題
- 使用者可以自己設定鬧鈴的音樂.
- 程式閒置時, 透明度減少 (視其必要性)
