.NET- এ রঙে কনসোলটিতে লেখা সম্ভব?


184

একটি ছোট কমান্ড লাইন সরঞ্জাম লিখতে, এটি বিভিন্ন রঙে আউটপুট করা ভাল হবে। এটা কি সম্ভব?

উত্তর:


245

হ্যাঁ. এই নিবন্ধটি দেখুন । সেখান থেকে একটি উদাহরণ এখানে:

Console.BackgroundColor = ConsoleColor.Blue;
Console.ForegroundColor = ConsoleColor.White;
Console.WriteLine("White on blue.");

এখানে চিত্র বর্ণনা লিখুন


3
পটভূমি চিত্র যুক্ত করা সম্ভব?
রোলরোল

@RollRoll ডিফল্ট cmd.exe এ নেই। আপনি যদিও কনসোল এমুলেটর ব্যবহার করার চেষ্টা করতে পারেন, যা ব্যাকগ্রাউন্ড ইমেজ টুইঙ্ক সমর্থন করে, তবে এখনও, এটি যাইহোক প্রোগ্রামক্রিয়াটিকলি করা যায় না।
রিমিগিয়াস শোয়েডা

+1 আপনি যখন এই জিনিসটি 10 ​​বছরেরও বেশি সময় ধরে করছেন এবং এখন 10 বছর আগে তারা কী জানতেন তা শিখলেন .... এটি কখনও পুরানো হয় না, হ্যাঁ।
জেসেটার


54

উপরের মন্তব্যগুলি উভয়ই শক্ত প্রতিক্রিয়া, তবে মনে রাখবেন যে তারা থ্রেড নিরাপদ নয়। আপনি যদি একাধিক থ্রেড সহ কনসোলে লিখছেন, রঙ পরিবর্তন করা একটি রেসের শর্ত যুক্ত করবে যা কিছু অদ্ভুত চেহারা দেখাচ্ছে আউটপুট তৈরি করতে পারে। যদিও এটি ঠিক করা সহজ:

public class ConsoleWriter
{
    private static object _MessageLock= new object();

    public void WriteMessage(string message)
    {
        lock (_MessageLock)
        {
            Console.BackgroundColor = ConsoleColor.Red;
            Console.WriteLine(message);
            Console.ResetColor();
        }
    }
}

10
সিঙ্ক্রোনাইজেশন ব্যতীত একাধিক থ্রেড থেকে লেখার ফলে রঙ পরিবর্তন না হলেও গ্লাবড আউটপুট তৈরি হবে: এটি কেবল বর্ণ পরিবর্তন করে না যা বর্ণের শর্ত তৈরি করে
জো

6
@ জো একটি একক Writeকল গার্ফড হবে নাস্ট্যাকওভারফ্লো . com/ প্রশ্নগুলি / 4812508/ … দেখুন । এটি কেবল রাইট-কলের ক্রম যা "নিরাপদ" নয়।
ব্যাটারিব্যাকআপ ইউনিত

27

আমি একটি ছোট প্লাগইন তৈরি করেছি ( নুগেটে উপলভ্য ) যা ক্লাসিক সমাধানগুলির সীমাবদ্ধতা ছাড়াই আপনাকে আপনার কনসোল আউটপুটে কোনও (আপনার টার্মিনাল দ্বারা সমর্থিত) রঙ যুক্ত করতে দেয়।

এটি Stringঅবজেক্টটি প্রসারিত করে কাজ করে এবং বাক্য গঠনটি খুব সহজ:

"colorize me".Pastel("#1E90FF");

অগ্রভাগ এবং পটভূমি উভয় রঙই সমর্থিত।

এখানে চিত্র বর্ণনা লিখুন


1
এটি কোডের সত্যিই আশ্চর্যজনক টুকরা। আমি পুরো রঙ এক্সটেনশানটি নিষ্ক্রিয় করার বিকল্পটির প্রশংসা করি। এটি লিনাক্সের রঙ বিকল্প ব্যবহারের সাথে স্যুট করে (ls olcolor = স্বয়ং)।
মিয়ানেনসিজেড

13

হ্যাঁ, এটি সহজ এবং সম্ভাব্য। প্রথম ডিফল্ট রঙগুলি সংজ্ঞায়িত করুন।

Console.BackgroundColor = ConsoleColor.Black;
Console.ForegroundColor = ConsoleColor.White;
Console.Clear();

Console.Clear()নতুন কনসোল রঙ সেট করার জন্য এটি গুরুত্বপূর্ণ। আপনি যদি এই পদক্ষেপটি না করেন তবে মানগুলির সাথে জিজ্ঞাসা করার সময় আপনি সম্মিলিত রং দেখতে পাবেন Console.ReadLine()

তারপরে আপনি প্রতিটি মুদ্রণের রঙ পরিবর্তন করতে পারেন:

Console.BackgroundColor = ConsoleColor.Black;
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("Red text over black.");

আপনার প্রোগ্রামটি শেষ করার পরে ফিনিসটিতে কনসোলের রিসেটগুলি রিসেট করুন:

Console.ResetColor();
Console.Clear();

নেটকোরের সাথে এখন আমাদের আর একটি সমস্যা রয়েছে যদি আপনি ব্যবহারকারীর অভিজ্ঞতা "সংরক্ষণ" করতে চান তবে প্রতিটি অপারেটিভ সিস্টেমে টার্মিনালের বিভিন্ন রঙ থাকে।

আমি একটি লাইব্রেরি তৈরি করছি যা পাঠ্য বিন্যাস: রঙ, প্রান্তিককরণ এবং আরও অনেক কিছু দিয়ে এই সমস্যা সমাধান করে। নির্দ্বিধায় ব্যবহার এবং অবদান রাখুন।

https://github.com/deinsoftware/colorify/ এবং নুগেট প্যাকেজ হিসাবে উপলব্ধ

উইন্ডোজ / লিনাক্সের জন্য রঙ (অন্ধকার):
এখানে চিত্র বর্ণনা লিখুন

MacOS (হালকা) জন্য রঙ:
এখানে চিত্র বর্ণনা লিখুন


6

উপরের যে উত্তরগুলি সমস্ত ব্যবহার করে কেবল সেগুলি যুক্ত করতে Console.WriteLine: একই পাঠ্যের একই লাইনে রঙ পরিবর্তন করতে, উদাহরণস্বরূপ লিখুন:

Console.Write("This test ");
Console.BackgroundColor = bTestSuccess ? ConsoleColor.DarkGreen : ConsoleColor.Red;
Console.ForegroundColor = ConsoleColor.White;
Console.WriteLine((bTestSuccess ? "PASSED" : "FAILED"));
Console.ResetColor();

4

হ্যাঁ নিম্নলিখিত হিসাবে এটি সম্ভব। এই রঙগুলি লাল রঙ ইত্যাদিতে কিছু ত্রুটি দেখতে কনসোল অ্যাপ্লিকেশনটিতে ব্যবহার করা যেতে পারে ...

Console.BackgroundColor = ConsoleColor.Blue;
Console.ForegroundColor = ConsoleColor.White;//after this line every text will be white on blue background
Console.WriteLine("White on blue.");
Console.WriteLine("Another line.");
Console.ResetColor();//reset to the defoult colour

3

এখানে একটি সহজ পদ্ধতি যা আমি ইনলাইন রঙ পরিবর্তনের সাথে কনসোল বার্তা লেখার জন্য লিখেছিলাম। এটি কেবল একটি রঙকে সমর্থন করে তবে এটি আমার প্রয়োজনের সাথে খাপ খায়।

    // usage: WriteColor("This is my [message] with inline [color] changes.", ConsoleColor.Yellow);
    static void WriteColor(string message, ConsoleColor color)
    {

        var pieces = Regex.Split(message, @"(\[[^\]]*\])");

        for(int i=0;i<pieces.Length;i++)
        {
            string piece = pieces[i];

            if (piece.StartsWith("[") && piece.EndsWith("]"))
            {
                Console.ForegroundColor = color;
                piece = piece.Substring(1,piece.Length-2);          
            }

            Console.Write(piece);
            Console.ResetColor();

        }

        Console.WriteLine();

    }

ইনলাইন রঙ পরিবর্তন সহ কনসোল বার্তার চিত্র

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.