|
導(dǎo)讀微信小程序,簡(jiǎn)稱小程序,英文名Mini Program,是一種不需要下載安裝即可使用的應(yīng)用,它實(shí)現(xiàn)了應(yīng)用“觸手可及”的夢(mèng)想,用戶掃一掃或搜一下即可打開(kāi)應(yīng)用。小程序是一種不用下載就能使用的應(yīng)用,也是一... 微信小程序,簡(jiǎn)稱小程序,英文名Mini Program,是一種不需要下載安裝即可使用的應(yīng)用,它實(shí)現(xiàn)了應(yīng)用“觸手可及”的夢(mèng)想,用戶掃一掃或搜一下即可打開(kāi)應(yīng)用。小程序是一種不用下載就能使用的應(yīng)用,也是一項(xiàng)門(mén)檻非常高的創(chuàng)新,經(jīng)過(guò)將近兩年的發(fā)展,已經(jīng)構(gòu)造了新的小程序開(kāi)發(fā)環(huán)境和開(kāi)發(fā)者生態(tài)。 ![]() 一般來(lái)說(shuō),在Windows XP畫(huà)面的右下角會(huì)提示用戶目前的時(shí)間與日期,如果用點(diǎn)兩下右下角的時(shí)間或是日期文字后,會(huì)出現(xiàn)如圖表1所示之「日期和時(shí)間 內(nèi)容」對(duì)話框。請(qǐng)注意對(duì)話框右方的小時(shí)鐘,時(shí)針、分針與秒針會(huì)隨著時(shí)間的流逝而改變位置,就好像真的時(shí)鐘一樣。現(xiàn)在,利用一些邏輯的推演與.Net Framework精巧的繪圖類別,也能夠輕易做出類似的效果,以下是我們的說(shuō)明。 程序范例
圖表2所示者是程序范例的執(zhí)行結(jié)果,在窗體的Load事件處理例程中,計(jì)算繪制時(shí)鐘的半徑以及坐標(biāo)位置,當(dāng)用戶調(diào)整時(shí)鐘所屬之窗體大小時(shí),窗體會(huì)以雙重緩沖的控制模式,自動(dòng)重繪時(shí)鐘的內(nèi)容。之所以設(shè)定雙重緩沖,是為了減少窗體重繪時(shí)所造成的畫(huà)面閃動(dòng),程序代碼如下所列: private void Blog_DemoForm007_Load(object sender, EventArgs e)
{
// 判斷窗體的框線樣式是否為可調(diào)整的框線。
DoShowFrame = (this.FormBorderStyle == FormBorderStyle.Sizable);
DemoClock = new Clock(this);
// 取回矩型的寬度與高度坐標(biāo)。
ClientOffset = CalcClientLocation();
// 計(jì)算時(shí)鐘半徑與坐標(biāo)。
CalcCircleSize();
// 指定窗體樣式位,當(dāng)控件重新調(diào)整大小時(shí),會(huì)重新繪制。
this.SetStyle(ControlStyles.ResizeRedraw, true);
// 指定窗體樣式位,控件會(huì)忽略窗口訊息WM_ERASEBKGND 以降低重繪閃動(dòng),
// 控件會(huì)自己繪制,操作系統(tǒng)不必執(zhí)行,
// 并且繪制已在緩沖區(qū)執(zhí)行,繪制完成后將結(jié)果輸出至屏幕,
// 設(shè)定雙重緩沖能避免控件重繪時(shí)所造成的重繪閃動(dòng)。
this.SetStyle(ControlStyles.AllPaintingInWmPaint |
ControlStyles.UserPaint | ControlStyles.DoubleBuffer, true);
}用戶除了能夠改變窗體的大小,還可以讓時(shí)鐘外圍的窗體框架消失,如此一來(lái)小時(shí)鐘的外型就跟一般傳統(tǒng)的時(shí)鐘沒(méi)有什么兩樣,如圖表3所示:
也許您會(huì)問(wèn),在沒(méi)有窗體外框的情況下,能不能夠用鼠標(biāo)拖拉的方式將小時(shí)鐘移動(dòng)到想要的位置上?答案是肯定的。請(qǐng)?jiān)诖绑w的MouseDown、MouseUp與MouseMove事件處理例程撰寫(xiě)如下所示之程序代碼: private void Blog_DemoForm007_MouseDown(object sender, MouseEventArgs e)
{
// 用戶按下鼠標(biāo)左鍵。
if (e.Button == MouseButtons.Left)
{
IsMouseDown = true;
MouseOffset.X = e.X;
MouseOffset.Y = e.Y;
}
}
private void Blog_DemoForm007_MouseUp(object sender, MouseEventArgs e)
{
IsMouseDown = false;
}
private void Blog_DemoForm007_MouseMove(object sender, MouseEventArgs e)
{
// 移動(dòng)窗體位置。
if (IsMouseDown)
{
this.Location = new Point(
this.Location.X + e.X - MouseOffset.X,
this.Location.Y + e.Y - MouseOffset.Y);
}
}不久之后,我們還會(huì)完成一個(gè)更完整的小時(shí)鐘范例,加入更多更豐富的功能,例如:倒數(shù)計(jì)時(shí)、改變時(shí)鐘的顏色與漸層效果、顯示文字時(shí)鐘、以及時(shí)鐘功能設(shè)定文件等等,今天就先聊到這里,下次再見(jiàn)。 以上就是詳解小時(shí)鐘程序的實(shí)現(xiàn)方法的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注php中文網(wǎng)其它相關(guān)文章! 小程序是一種不需要下載安裝即可使用的應(yīng)用,它實(shí)現(xiàn)了應(yīng)用“觸手可及”的夢(mèng)想,用戶掃一掃或者搜一下即可打開(kāi)應(yīng)用。 |
溫馨提示:喜歡本站的話,請(qǐng)收藏一下本站!