My.Application.DoEvents() '--- มันจะแทรกคิวตัว me.Opacity เข้าไปเพื่อให้ Main Thread วาด Me.Opacity ก่อน
Me.Opacity = i '--- ในหน้า Design มันจะเป็น % พอโค้ดมันเป็น Double สูงสุดที่ 1.0 แปลงมาจาก % นั่นเองครับ
Nex
System.Threading.Thread.Sleep(5000) '--- เมื่อความชัด 100 % ให้อึ้งไป 5 วิ
For j As Double = 1.0 To 0.0 Step -0.05 '--- มาถึงการ Fade Out ออก ให้วิ่งทีละ 0.05
My.Application.DoEvents()
Me.Opacity = j
Next
Me.Close() '--- ปิดฟอร์มซ้า
พอเสร็จจากหน้า Splash Screen แล้วเรามาทำที่หน้า Main ( ของผมคือ ฟอร์มแม่ ( Parent ) นั่นเอง เพระผมทำเป็น Mdi ฟอร์ม )
'--- ฟอร์มแม่ Events Load
Me.Visible = False '--- ให้ซ่อนฟอร์มแม่ไว้ก่อน ตัว Splash Screen จะได้ไปโลดแล่นอยู่บนพื้น Window แทน ( ดูดีมีระดับ )
Dim a As New Screen '--- เรียกใช้งาน
a.ShowDialog() '--- แสดงผล ถึงตอนนี้มันก็ไปทำงานใน Event Load ของ Splash Screen จด มัน ปิดตัวเองไป
My.Application.DoEvents() '--- แทรก คิวให้ แสดงฟอร์มแม่ขึ้นมา
Me.Visible = True
OpenLogin() '--- อันนี้ผมให้ไป Call Method Login เป็นรายการต่อไป
--------------------
F5 ทดสอบ ซะ ทีนี้ว่าใครจะปรับให้หน่วงช้า หน่วงเร็ว ก็ไปปรับตรง Thread.Sleep ซะ หน่วยมันจะเป็น มิลลินะครับ
ส่วนความเร็วในการ Fade ก็แก้กันตามใจชอบเลยครับ ตรง Step ของ For Next
หวังว่า เป็นอีก 1 หนทางในการทำ Splash Screen ได้นะครับ ( มันสามารถทำได้หลายแบบฮับ )
Many Thanks.
www.greatfriends.biz www.codeProject.com
Special Thanks.
พี่เหมี่ยว
ไม่มีความคิดเห็น:
แสดงความคิดเห็น