الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

مقالة : كيف تستخدم الألوان مع نصوص ال Console ?

مغلق
بدأه محمد النحراوي في 13 يناير 2005 · 5 رد · 737 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله

سنعرف في هذه المقالة البسيطة كيف يمكننا ان نقوم بتغيير الألوان الإعتيادية (الأبيض والأسود) في نافذة الConsole لنجعلها بالألوان التي نرغبها

في البداية نقوم بفتح مشروع Console جديد .

ثم نضيف إليه Module جديد ولنسمه ConsoleColoring (بالطبع هذا الموديول سيكون الموديول الثاني لأن هناك موديول ستنشئه بيئة دوت نيت تلقائياً وسيكون اسمه Module1)

ماذا سنكتب داخل موديول ConsoleColoring ؟

سنحتاج لاستخدام دالتين Api وهما GetStdHandle ، SetConsoleTextAttribute وهما موجودتان في مكتبة kernel32.dll وكيفية إستدعائهما تكون كالآتي :

    Private Declare Auto Function GetStdHandle Lib "kernel32.dll" (ByVal nStdHandle As Integer) As IntPtr
    Private Declare Auto Function SetConsoleTextAttribute Lib "kernel32" (ByVal hConsoleOutput As IntPtr, ByVal wAttributes As Integer) As Long

وأيضاً سنحتاج لتعريف ثابت (سيستخدم كمعامل لنمرره لدالة GetStdHandle) كالتالي :

    Private Const STD_OUTPUT_HANDLE As Integer = &HFFFFFFF5

بعد ذلك سنحتاج لتعريف Enum جديد (لا أعرف الترجمة العربية لل Enum :unsure: ) وسيكون باسم ForeColors ووظيفته تخزين بعض الألوان (لون الخط) التي سيمررها المستخدم عند إستدعاء إجراءات التنفيذ ، وسنعرف Enum آخر وسيكون باسم BackColors وسيخزن ألوان الخلفية :

    Public Enum ForeColors
        Blue = &H1
        Green = &H2
        Red = &H4
        White = &HF
    End Enum

    Public Enum BackColors
        Blue = &H10
        Green = &H20
        Red = &H40
         End Enum

ملحوظة : يمكنك تعريف ألوان أخرى غذا أردت ذلك .

ملحوظة أخرى : لاحظ انه ربما تشابهت أسماء الألوان لكن القيم تختلف مابين النص والخلفية .

الآن بقي (في هذا الموديول) أن نكتب الإجراءات المستخدمة في تنفيذ عملية التلوين :

    Public Sub SetConsoleColors(ByVal ForeColor As ForeColors, ByVal Backcolor As BackColors)
        Dim hConsole As IntPtr = GetStdHandle(STD_OUTPUT_HANDLE)
        Backcolor = IIf(Backcolor = 0, 256, Backcolor * 16)
        SetConsoleTextAttribute(hConsole, ForeColor Or Backcolor)
    End Sub

    Public Sub SetConsoleColors(ByVal ForeColor As ForeColors)
        Dim hConsole As IntPtr = GetStdHandle(STD_OUTPUT_HANDLE)
        SetConsoleTextAttribute(hConsole, ForeColor)
    End Sub

نلاحظ أن الإجرائين لهما نفس الاسم لكن ... نعم .. المعاملات(Parameters) مختلفة فالأولى لتمرير لون النص والخلفية والثانية لتمرير لون النص فقط .

الآن جاء دور الموديول الرئيسي المسمى-افتراضياً- Module1 ..

وسيحتوي على التطبيق لما كتبنا الآن ، اذهب لإجراء (Sub) Main واكتب داخله الكود التالي :

        ConsoleTools.SetConsoleColors(ConsoleTools.ForeColors.White, ConsoleTools.BackColors.Green)
        Console.WriteLine("Elnahrawi@Hotmail.com")
        Console.WriteLine()
        ConsoleTools.SetConsoleColors(ConsoleTools.ForeColors.Blue)
        Console.WriteLine("Elnahrawi@Hotmail.com")
        Console.Read()

هذا كل شيء ، وفقنا الله وإياكم لما يحبه ويرضاه .

تم تعديل هذه المشاركة بواسطة محمد النحراوي في 13 يناير 2005 في 21:43

#2

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

#3

جزانا الله وإياكم أخي أحمد

وأرجو من الله أن ينفعك بهذا الشرح

#4

أخي محمد، شكراً على وقتك وجهدك المقدرين.

بإذن الله سنقوم قريباً بوضع رابط لمشاركتك هذه وغيرها من المشاركات الجميلة (وهي كثيرة ولله الحمد في المنتدى) في المواضيع المثبتتة في القسم...

شكراً ثانية أخي الحبييب ثانية وأهلاً وسهلاً بك عضواً بيننا وأخ لنا.

Learn Japanese :>>> http://www.nouben.com/

#5

السلام عليكم

كل عام أنت بخير ، تقبل الله منا ومنكم

جزاكم الله خيراً أخي الفاضل وأعتذر على تأخر ردي ، وقلة مشاركاتي وبإذن الله تعالى سأحاول أن أزيد منها قريباً فالله المستعان

هذا الموضوع مغلق.

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…