
رد : المدخل إلى فيجوال بيسيك 2005و 2008 (الموضوع متجدد ويتبع )
3.2-
كيفية تدريج اللون داخل الفورم
لكى نعرف كيف نتحكم فى تدرج اللون سنقوم بعمل تطبيق للتدرج داخل الفورم
-فورم يحتوى على PictuerBox وTimer
-تغييرالخاصية Enabled الموجودة فى Timer إلى True
الكود
فى قسم التصريحات العامة
كود:
Imports System.Drawing.Drawing2D
من الواضح طبعا الغرض واضح من استيراد Drawing2D حيث سنستخدم أدوات الرسم
فى الفورم
كود:
Private M_M As Single = 0
Private M_D As Single = 0.1
لتعريف الخاصية المطلوبة سنقوم بإنشاء روتين فرعى
كود:
Private Sub PictureBox1_Paint(ByVal sender As Object, _
ByVal e As System.Windows.Forms.PaintEventArgs) Handles _
PictureBox1.Paint
Dim LB As New LinearGradientBrush(New Point(0, 0), New Point _
(Me.ClientSize.Width, 0), Color.Green, Color.Yellow)
Dim CB As New ColorBlend
CB.Colors = New Color() {Color.Green, Color.YellowGreen, Color.Yellow}
CB.Positions = New Single() {0, M_M, 1}
LB.InterpolationColors = CB
e.Graphics.FillRectangle(LB, Me.ClientRectangle)
LB.Dispose()
M_M += M_D
If (M_M > 1) OrElse (M_M < 0) Then M_D = -M_D
End Sub
شرح هذا الكود
كود:
Dim LB As New LinearGradientBrush(New Point(0, 0), New Point _
(Me.ClientSize.Width, 0), Color.Green, Color.Yellow)LB
التدرج الخطى يبداء من النقطتين 0 و0 رأسيا وأفقيا التدرج يبداء من اللون الأخضر وينتهى بالأصفر
CB سيكون هو خالط اللون
كود:
CB.Colors = New Color() {Color.Green, Color.YellowGreen, Color.Yellow}
أثناء التدرج من الأخضر إلى الأصفر هناك مرحلة انتقالية وهى الأخضر المائل للصفرة
كود:
CB.Positions = New Single() {0, M_M, 1}
تحديد نقطة البداء بالنسبة ل CB
كود:
LB.InterpolationColors = CB
وهذة هى نقطة الإنقلاب
كود:
e.Graphics.FillRectangle(LB, Me.ClientRectangle)
وهنا يجب تعبئة الشكل الرباعى بكل ماسبق
الان سنعرف ماهى وظيفة Timer
ووظيفتة تحريك العمل الذى قمنا بة ولكى نقوم بتفعيلة دبل كليك علية ثم نكتب الكود التالى
كود:
PictureBox1.Invalidate()
ومعناة إجعل مربع الصورة يتلاشى
طبعا يمكنكم تغيير الألوان والأوضاع حسب الرغبة
ودة طبعا رابط المشروع
http://www.zshare.net/download/5068487a823b4f
ويتبع.....