วันอาทิตย์ที่ 13 มกราคม พ.ศ. 2551

มาทำ splash Screen อย่างง่ายๆ

วันนี้เปิด Program Photoshop 7.0 มันจะมี screen แว๊บหนึ่งขึ้นมาก่อนที่จะเข้าโปรแกรม
ทีแรกไม่รู้หรอกเขาเรียกอะไร ก็ไป search หาคำว่า Screen ใน Gf มี แต่ไม่ใช่ แต่ก็ใกล้เคียง
เลยไปถามพี่เหมี่ยว เลยได้มาว่า มันเรียกว่า Splash Screen นั่นเอง
เริ่มแรกก็ไปสร้าง WindowForm ขึ้นมา 1 ตัว กำหนด Form Border Style เป็น None
ไปกดหนด Start Position เป็น CenterParent ( ผมทำใน Mdi Form ) เสร้จแล้วก็เอาภาพที่ตกแต่ง
มาใส่ในฟอร์ม แล้วก็โค้ดดังนี้
'--- FormLoad
For i As Double = 0.5 To 1.0 Step 0.1

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.

พี่เหมี่ยว

ไม่มีความคิดเห็น: