أعلن في بوابة داماس

العودة   داماس > المنتديات العلمية > كورســــــــات بوابة داماس والبرمجة
التّسجيل داماس دليل داماس فحص البيج رانك استضافة داماس تصاميم خلفيات جعل جميع المنتديات مقروءة

شرح طريقة تغيير شكل الفورم التقليدي - الجزء الاول

كورســــــــات بوابة داماس والبرمجة

المشاركة في الموضوع
 
Submit Tools خيارات الموضوع طريقة العرض
  #1 (permalink)  
قديم 12-05-2008, 11:44 AM
عضو

شرح طريقة تغيير شكل الفورم التقليدي - الجزء الاول


اللغه المستخدمه: الفيجوال بيسك

التطبيق: فيجوال ستوديو 2005 و 2008

المستوي: المبتدئين

اعداد: مهندس / عمر أمين إبراهيم

------------------------------------------

من فتره كتبت الموضوع ده ونشرته في بعض المنتديات الاخري واعتقد انه ها يكون مناسب لبعض المهتمين بنفس الشئ وخصوصا المبتدئين

لتغيير شكل الفورم تماما والتخلص من الشكل التقليدي المعتاد مع برنامج فيجوال استوديو فان ذلك يتم باستخدام خاصية +GDI

الطريقة الأولي:

استخدام الصور التي تم تصميمها علي سبيل المثال بأحد برامج الجرافيك علي سبيل المثال Ulead PhotoImpact أو أي برنامج جرا فيك أخر مناسب.

الخطوات:

نقوم بتصميم الصورة المطلوبة مهما كان شكلها مثلا صورة طائره أو صورة إنسان ألي أو صورة شجره الي أخره من الصور المختلفة ويجب أن يراعي أن تكون خلفية الصورة أو اللون المستخدم في خلفية الصورة معروف لنا بالاضافه الي أبعاد الصورة (الطول و العرض) ويمكن تسجيل هذه التفاصيل في ورقه منفصلة مؤقتا حتى لا ننساها ويراعي أيضا أن تكون الصورة ليست مضغوطة أثناء تصميمها. عموما إن هذا النوع من التصميمات يحتاج الي رسام محترف أو مبرمج يجيد استخدام برامج الرسم باحترافية بحيث انه يستطيع التعامل مع الألوان والخلفيات بشكل جيد. عزيزي لا تخاف حتى لو كنت مصمم جرا فيك عادي وغير محترف فسوف تستطيع إخراج صوره بشكل جيد ومناسب. أيضا من الممكن تقسيم صورة الخلفية الي أكثر من جزء وهذا النوع من التصميم الجرافيك يتيح لنا أن نتحكم أكثر في الصورة بدقه واحترافية عاليه.

سوف نبدأ هنا بعرض مثال بسيط لتغيير شكل الفورم تماما و بشكل سريع جدا ولعمل ذلك نتبع الأتي:-

1- إنشاء مشروع جديد ونطلق عليه أي اسم نريد.

2- ثم نقوم بحفظ البرنامج بالطريقة المعتادة.

3- بعد ذلك نفتح الفورم في مرحلة Design وليس في مرحلة الكتابة.

4 - من نافذة Properties نقوم بتغيير بعض صفات الفورم وهي بالترتيب

5- خاصية FormBorderStyle نقوم بتغييرها الي None

6- خاصية ٍsize نقوم بتغييرها الي أبعاد الصورة التي سوف نستخدمها في البرنامج كخلفيه.

7- خاصية TransparencyKey وهنا يجب أن نختار نفس اللون المستخدم مع خاصية Backcolor هذا مهم جدا حني نجعل الفورم التقليدي مختفي تماما.

8- خاصية Background Image وهنا نضيف الصورة التي تم تصميمها مسبقا الي خلفية الفورم

9- خاصية BackgroundImageLayout وهنا نختار Center.

الآن كل ما هو علينا أن نقوم بتجربة البرنامج لنري نتائج ما فعلنا.

وهنا نكون قد انتهينا من ألمرحله الأولي لتغيير شكل الفورم

الطريقة الثانية:

1- نتبع نفس الخطوات المستخدمة في الطريقة الأولي حتى الخطوة رقم 7 فقط

2- نضيف الي المشروع Resources File ويتم ذلك بأكثر من طريقه إما عن طريق الذهاب الي قائمة Project واختيار إضافة عنصر جديد Add New Item أو بالضغط مباشرة علي مفاتيح Ctrl + Shift + A 3- سيقوم ذلك بفتح نافذة إضافة عنصر جديد وهنا علينا اختيار Resources File من الاختيارات الكثيرة الموجودة بالنافذة طبعا يمكننا تغيير الاسم أو تركه كما هو عموما الاسم المبدئي هو Resources1

3- وسيؤدي ذلك الي فتح نافذة Resources1.resx وسنختار Add Resources ومنها Add Existing File

وهنا علينا أن نضيف ملفات الجرافيك التي قمنا بتصميمها ببرنامج الجرافيك.

4- ثم نبدأ بإضافة الكود التالي الي الفورم وفي هذا الكود يتم خلق الصورة من الصور التي تم إضافتها الي Resources File حيث أن _skin هو الاسم الذي سوف نستدعي به الصورة Bitmapمن خلال الكود وهذا الملف يتم استدعاءه من داخل My.Resources.Resources1 حيث أن Resouces1 هو اسم Resources File الذي تم إضافته الي الفورم في الخطوة رقم 2 تحت الطريقة الثانية وحيث أن Aliens هو اسم ملف الجرافيك الذي تم إضافته الي Resources1


كود:
Public Class Form2

                     ' Create Your Image
    
              Dim _skin As New Bitmap(My.Resources.Resource1.Alens)
        
     End Class
5- ثم نضيف الكود التالي الي الفورم وهنا سيصبح شكل الكود كالأتي:

كود:
Public Class Form2
    
               ' Create Your Image
    
            Dim _skin As New Bitmap(My.Resources.Resource1.Alens)
    
        ' Create an  ImageAttributes object and set the color key to ajust
    
        ' the form transperency.
    
                Dim lowerColor As  Color = Color.Magenta
    
            Dim upperColor As  Color = Color.Magenta
    
            Dim attr As New System.Drawing.Imaging.ImageAttributes
    
    End Class
سوف نتوقف قليلا لتوضيح الكود الذي تم إضافته الي الفورم و كما نلاحظ تم إضافة 3 عناصر الي الفورم وهما عبارة عن لونين لهما نفس المواصفات ونسمي الأول lowerColor ونسمي الثاني upperColor مع الوضع في الاعتبار أن يكون هذان اللونان هما نفس لون خلفية الصورة والذي قمنا بتسجيله علي ورقه منفصلة أثناء رسم الصورة كما هو مذكور في مقدمة الموضوع تحت الطريقة الأولي وسوف يتم استخدام هذان اللونين لإلغاء خلفية الصورة أثناء تشغيل البرنامج أما العنصر الأخير الذي تم إضافته فهو ImageAttribute وأطلقنا عليه الاسم attr

وهو عبارة عن Object تحتوي علي معلومات خاصة بالتلاعب بالصور بشكل عام وأيضا التعديل في الصور مثل Bitmap و MetaFiles و PNG و JPEG الي أخره من امتداد الملفات File Extension الخاصة بملفات الجرافيك

6- ألان سوف نضيف الكود التالي الي الفورم وهو هنا ببساطه يستعمل للهيمنة علي الفورم أو لتخطي Overrides شكل الفورم الأصلي وهذا الجزء من الكود يتم كتابته بمساعدة الفيجوال استوديو IntelliSense حيث أننا لن نجده في Form Events العادية

كود:
Public Class Form2
    
               ' Create Your Image
    
            Dim _skin As New Bitmap(My.Resources.Resource1.Alens)
    
        ' Create an  ImageAttributes object and set the color key to ajust
    
        ' the form transperency.
    
                Dim lowerColor As  Color = Color.Magenta
    
            Dim upperColor As  Color = Color.Magenta
    
            Dim attr As New System.Drawing.Imaging.ImageAttributes
    
            Protected Overrides Sub  OnPaint(ByVal e As  System.Windows.Forms.PaintEventArgs)
    
                    MyBase.OnPaint(e)
    
        End Sub
    End Class
7- ثم نضيف الكود الأتي لتحديد الصورة التي سوف يتم رسمها داخل الفورم ومن ثم نقوم برسمها داخل مستطيل Rectangle يبدأ من نقطه (0 , 0 ) ومقاسه يعادل مقاس الصورة وعلي أن تكون وحدة الرسم المستخدمة هي البكسل ومن ثم استخدام خاصية ImageAttribute لإخفاء اللون الخلفي للصورة وهو Color.Magenta تحديدا

كود:
Public Class Form2
    
               ' Create Your Image
    
            Dim _skin As New Bitmap(My.Resources.Resource1.Alens)
    
        ' Create an  ImageAttributes object and set the color key to ajust
    
        ' the form transperency.
    
                Dim lowerColor As  Color = Color.Magenta
    
            Dim upperColor As  Color = Color.Magenta
    
            Dim attr As New System.Drawing.Imaging.ImageAttributes
    
            Protected Overrides Sub  OnPaint(ByVal e As  System.Windows.Forms.PaintEventArgs)
    
                    MyBase.OnPaint(e)
    
            
    '  Creat graphic object
    
                Dim bmp As New Bitmap(_skin)
    
                Dim g As Graphics =  Graphics.FromImage(bmp)
    
                    ' Set the transparency color key based on the upper-left  pixel
    
                ' of the image (maneta color).
    
                 attr.SetColorKey(lowerColor, upperColor)
    
            ' Draw the image using the image attributes.            
Dim dstRect As New Rectangle(0, 0, bmp.Width, bmp.Height)
    
                e.Graphics.DrawImage(bmp,  dstRect, 0, 0, bmp.Width, bmp.Height, GraphicsUnit.Pixel, attr)
    
        End Sub
      End Class
8- وهنا نقوم بتجربة الفورم لنري تأثير الكود الذي تم إضافته

9- يتبقي شئ أخير هو عملية تحريك الفورم في الواقع لقد بحثت كثيرا في هذا الامر وتوصلت في النهاية الي انه يمكن استخدام أواستدعاء Windows API ومن ثم نستخدم هذه الخاصية من داخل الحدث الخاص بالفورم وهو هنا MouseDown وسنجد أن الكود النهائي بالشكل التالي

كود:
Public Class Form2
    
                   ' Create Your  Image
    
            Dim _skin As New Bitmap(My.Resources.Resource1.Alens)
    
                ' Use the following API to move the form
    
            Private Declare Sub ReleaseCapture Lib  "user32" ()
    
            Private Declare Sub SendMessage Lib "user32" Alias  "SendMessageA" (ByVal _
    
            hWnd As Integer, ByVal wMsg As Integer, ByVal wParam  As Integer, _
    
            ByVal lParam As Integer)
    
                Private Const  WM_NCLBUTTONDOWN As Integer  = &HA1
    
            Private Const  HTCAPTION As Integer  = 2
    
        ' Create an ImageAttributes object and set the color key to  ajust the form transperency.        
Dim lowerColor  As Color = Color.Magenta
    
            Dim upperColor As  Color = Color.Magenta
    
            Dim attr As New System.Drawing.Imaging.ImageAttributes
    
                Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
    
                    MyBase.OnPaint(e)
    
                ' Creat graphic object
    
                Dim bmp As New Bitmap(_skin)
    
                Dim g As Graphics =  Graphics.FromImage(bmp)
    
                    ' Set the transparency color key based on the upper-left  pixel
    
                ' of the image (maneta color).
    
                 attr.SetColorKey(lowerColor, upperColor)
    
            ' Draw the image using the image attributes.            
Dim dstRect As New Rectangle(0, 0, bmp.Width, bmp.Height)
    
                 e.Graphics.DrawImage(bmp, dstRect, 0, 0, bmp.Width, bmp.Height, _
    
                     GraphicsUnit.Pixel, attr)
    
                End Sub
    
                Private Sub  Form2_MouseDown(ByVal sender As Object, ByVal e As  System.Windows.Forms.MouseEventArgs) Handles Me.MouseDown
    
                    ' Move the form
    
                If e.Button = MouseButtons.Left Then
    
                     ReleaseCapture()
    
                    SendMessage(Me.Handle.ToInt32, WM_NCLBUTTONDOWN, HTCAPTION,  0&)
    
                End If
    
         End Sub
      End Class
لقد قمت بإضافة أمثله كثيرة في المثال المرفق لتوضيح الطريقة السابقة ولتوضيح كيف أن خلفية الصورة أو الخطأ في الصورة أو أي ظل موجود في الصورة قدي يؤدي الي ظهور الفورم أثناء التنفيذ بشكل قبيح أو شكل غير متجانس

ملحوظه جميع الفورم المرفقة يمكن تحريكها من أماكنها باستخدام الماوس حيث عند تشغيل المثال المرفق سيظهر الفورم الأول ومن داخله نختار الفورم الاخري

هذا فقط مثال توضيحي واتمني من الله أن يكون ذا فائدة للاحوه الآخرين

وأيضا أضفت فكره سريعة عن استخدام الرسم بالفيجوال استوديو بدون استخدام صور وذلك لتوضيح أيضا أننا نستطيع تغيير شكل الفورم بأكثر من طريقه والمثال الأخير هو في Form8 تحديدا وهذا المثال سيكون هو البداية الحقيقية لتغيير شكل الفورم وسيتم التوضيح في درس لاحق بإذن الله

طبعا الامر مفتوح للنقاش وأي أفكار منكم سوف تساهم بإيصال المعرفة للجميع وهذا هو الهدف المطلوب


المرفقات: ملف مضغوط يحتوي علي الكود + ملف وورد

رابط التنزيل حجم الملف 4 ميجابايت

http://www.flyupload.com/?fid=2939673

أخوكم عمر
  #2 (permalink)  
قديم 06-07-2008, 03:14 AM
عضو

مشكوووووووووووووور

  #3 (permalink)  
قديم 10-07-2008, 03:48 PM
عضو

شاكر ليك مجهودك الرائع

تحياتي

  #4 (permalink)  
قديم 16-07-2008, 06:38 AM
عضو

مشكوووووووووووووووووووور وجزاك الله خيرا





المشاركة في الموضوع


عدد الأعضاء الذي يتصفحون هذا الموضوع : 1 (0 عضو و 1 ضيف)
 
خيارات الموضوع
طريقة العرض


مواضيع مشابهة
الموضوع كاتب الموضوع المنتدى الردود آخر مشاركة
مجموعة نكت حلوه...صوت audio(الجزء الاول) minatamer الغاز, طرائف, مسابقات, مرح, نكت, فوازير , مقاطع فيديو 0 20-04-2008 06:16 PM
طبيب اون لاين (الجزء الاول) Dr Dana الطب البشري - العلاج بالأدوية و الأعشاب الطبية 4 22-01-2007 06:59 PM
لمن لديه لعبةgenerals الجزء الاول mlook العاب - العاب فيديو - العاب كمبيوتر - بلاي ستيشن - العاب اطفال - العاب بنات - العاب فلاش 2 24-02-2006 05:22 PM
Los Angeles de Charlie الجزء الاول ولد الفلاحي السينما - تحميل أفلام - عربي - انجليزي - ترجمة أفلام 1 15-08-2003 10:25 PM
فلم Terminator الجزء الاول ولد الفلاحي السينما - تحميل أفلام - عربي - انجليزي - ترجمة أفلام 2 08-08-2003 08:04 PM

شات دردشه صور العاب بنات   فيديو hannah montana فساتين توبيكات
دردشة العاب للبنات دردشة منتديات لكي بلوتوث دردشة games for games موقع العاب فيديو

Powered by vBulletin® Version 3.6.11
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427