Bagaimana mengubah warna latar depan dan latar belakang warna teks di jendela konsol dengan menggunakan Visual C#

Terjemahan Artikel Terjemahan Artikel
ID Artikel: 319883 - Melihat produk di mana artikel ini berlaku.
Perbesar semua | Perkecil semua

Pada Halaman ini

RINGKASAN

Artikel ini selangkah demi selangkah menjelaskan cara mengubah warna latar depan dan latar belakang teks yang ditulis untuk jendela konsol dengan menggunakan Visual C#.

Artikel ini menjelaskan bagaimana cara menyimpan pengaturan awal jendela konsol seperti program dimulai, bagaimana memodifikasi pengaturan warna, dan bagaimana mengembalikan warna untuk nilai-nilai asli mereka sebagai program berhenti.


Pendahuluan

Untuk mengubah warna latar depan dan latar belakang teks yang menampilkan jendela konsol, gunakan SetConsoleTextAttribute Aplikasi Win32 pemrograman antarmuka (API) fungsi. Fungsi ini menset atribut karakter yang ditulis untuk penyangga layar.

Ketika Anda mengubah atribut ini pada jangka waktu, perubahan berlaku untuk selama jendela konsol yang terbuka. Jika Anda menutup dan membuka kembali jendela konsol, atribut akan reset ke nilai default. Jika Anda menjalankan program dari baris perintah di jendela konsol yang sudah berjalan, perubahan yang Anda buat untuk atribut teks berlaku untuk jendela konsol yang untuk selama jendela terbuka, bahkan setelah program Anda berhenti. Oleh karena itu, sebuah program harus mengembalikan atribut warna asli sebelum program berhenti.

Anda dapat memperoleh atribut teks jendela konsol dengan menggunakan GetConsoleScreenBufferInfo Fungsi API. Fungsi ini memenuhi contoh CONSOLE_SCREEN_BUFFER_INFO struktur dengan informasi tentang pengaturan output buffer saat ini. The wAttribute parameter struktur ini berisi informasi warna yang mendefinisikan warna latar depan dan latar belakang teks. Warna mungkin adalah kombinasi warna yang dapat dibuat dengan menggabungkan merah, hijau, dan biru.
   OriginalColors = ConsoleInfo.wAttributes;
   SetConsoleTextAttribute(hConsoleHandle, color);
				
Anda dapat menggunakan ResetColor metode untuk me-reset output buffer atribut jendela konsol untuk nilai-nilai asli yang ditangkap ketika program mulai pelaksanaannya.
   SetConsoleTextAttribute(hConsoleHandle, OriginalColors);
				

Contoh langkah demi langkah

  1. Dalam Visual Studio.NET atau Visual Studio 2005, membuat proyek baru Visual C# Console Application.
  2. Dalam solusi Explorer, klik kanan proyek Anda, klik Tambahkan, kemudian pilih Menambahkan kelas menambahkan kelas baru untuk program Anda.
  3. Paste kode contoh berikut di kelas yang dibuat. Memverifikasi bahwa kode contoh menggantikan semua ada kode di kelas.
       using System;
       using System.Runtime.InteropServices;
    
       namespace ConsoleColor
       {
          /// Summary description for Class2.
          public class Class2
          {
             private int hConsoleHandle;
             private COORD ConsoleOutputLocation;
             private CONSOLE_SCREEN_BUFFER_INFO ConsoleInfo;
             private int OriginalColors;
    
             private const int  STD_OUTPUT_HANDLE = -11;
    
             [DllImport("kernel32.dll", EntryPoint="GetStdHandle", SetLastError=true,
                             CharSet=CharSet.Auto,
                             CallingConvention=CallingConvention.StdCall)]
    		private static extern int GetStdHandle(int nStdHandle);
    
             [DllImport("kernel32.dll", EntryPoint="GetConsoleScreenBufferInfo",
                             SetLastError=true, CharSet=CharSet.Auto,
                             CallingConvention=CallingConvention.StdCall)]
    		private static extern int GetConsoleScreenBufferInfo(int hConsoleOutput,
                             ref CONSOLE_SCREEN_BUFFER_INFO lpConsoleScreenBufferInfo);
    
             [DllImport("kernel32.dll", EntryPoint="SetConsoleTextAttribute",
                             SetLastError=true, CharSet=CharSet.Auto,
                             CallingConvention=CallingConvention.StdCall)]
    		private static extern int SetConsoleTextAttribute(int hConsoleOutput,
                                     int wAttributes);
     
             public enum Foreground
             {			
                Blue = 0x00000001,
                Green = 0x00000002,
                Red = 0x00000004,
                Intensity = 0x00000008
             }
    
             public enum Background
             {
                Blue = 0x00000010,
                Green = 0x00000020,
                Red = 0x00000040,
                Intensity = 0x00000080
             }
    
             [StructLayout(LayoutKind.Sequential)] private struct COORD
             {
                short X;
                short Y;
             }
    			
             [StructLayout(LayoutKind.Sequential)] private struct SMALL_RECT
             {
                short Left;
                short Top;
                short Right;
                short Bottom;
             }
    
             [StructLayout(LayoutKind.Sequential)] private struct CONSOLE_SCREEN_BUFFER_INFO
             {
                public COORD dwSize;
                public COORD dwCursorPosition;
                public int wAttributes;
                public SMALL_RECT srWindow;
                public COORD dwMaximumWindowSize;
             }
    
             // Constructor.
             public Class2()
             {
                ConsoleInfo = new CONSOLE_SCREEN_BUFFER_INFO();
                ConsoleOutputLocation = new COORD();
                hConsoleHandle = GetStdHandle(STD_OUTPUT_HANDLE);
                GetConsoleScreenBufferInfo(hConsoleHandle, ref ConsoleInfo);
                OriginalColors = ConsoleInfo.wAttributes;
             }		
    
             public void TextColor(int color)
             {
                SetConsoleTextAttribute(hConsoleHandle, color);
             }
    		
             public void ResetColor()
             {
                SetConsoleTextAttribute(hConsoleHandle, OriginalColors);
             }
          }
       }
    					
  4. Paste kode contoh berikut dalam file kelas yang berisi Utama fungsi. Memverifikasi bahwa kode contoh menggantikan semua kode yang ada dalam file.
       using System;
    
       namespace ConsoleColor
       {
          class Class1
          {
             [STAThread]
             static void Main(string[] args)
             {
                Class2 TextChange = new Class2();
                Console.WriteLine("Original Colors");
                Console.WriteLine("Press Enter to Begin");
                Console.ReadLine();
                TextChange.TextColor((int)Class2.Foreground.Green +
                                     (int)Class2.Foreground.Intensity);
                Console.WriteLine("THIS TEXT IS GREEN");
                Console.WriteLine("Press Enter to change colors again");
                Console.ReadLine();
                TextChange.TextColor((int)Class2.Foreground.Red +
                                     (int)Class2.Foreground.Blue +
                                     (int)Class2.Foreground.Intensity);
                Console.WriteLine("NOW THE TEXT IS PURPLE");
                Console.WriteLine("Press Enter to change colors again");
                Console.ReadLine();
                TextChange.TextColor((int)Class2.Foreground.Blue +
                                     (int)Class2.Foreground.Intensity +
                                     (int)Class2.Background.Green +
                                     (int)Class2.Background.Intensity);
                Console.WriteLine("NOW THE TEXT IS BLUE AND BACKGROUND OF IT IS GREEN");
                Console.WriteLine("Press Enter change everything back to normal");
                Console.ReadLine();
                TextChange.ResetColor();
                Console.WriteLine("Back to Original Colors");
                Console.WriteLine("Press Enter to Terminate");
                Console.ReadLine();
    	 }
          }
       }
    					
  5. Tekan F5 untuk mengkompilasi dan kemudian menjalankan program.

Pemecahan Masalah

Jika Anda mengalami masalah, memverifikasi bahwa Anda melewati nilai berlaku sebagai parameter untuk TextColor metode. Untuk menciptakan nilai yang berlaku, menggabungkan nilai-nilai yang Anda peroleh dari Latar depan dan Latar belakang enumerasi sebagaimana didefinisikan di kelas.

REFERENSI

Untuk informasi selengkapnya, kunjungi situs Web Microsoft berikut ini:
Konsol fungsi
http://msdn2.Microsoft.com/en-us/library/ms682073.aspx
Untuk informasi tambahan, klik nomor artikel di bawah ini untuk melihat artikel di dalam Basis Pengetahuan Microsoft:
319257 CARA: Jelas jendela konsol dengan Visual C#.NET

Properti

ID Artikel: 319883 - Kajian Terakhir: 24 September 2011 - Revisi: 2.0
Berlaku bagi:
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft Visual C# 2005 Express Edition
Kata kunci: 
kbhowtomaster kbmt KB319883 KbMtid
Penerjemahan Mesin
PENTING: Artikel ini diterjemahkan menggunakan perangkat lunak mesin penerjemah Microsoft dan bukan oleh seorang penerjemah. Microsoft menawarkan artikel yang diterjemahkan oleh seorang penerjemah maupun artikel yang diterjemahkan menggunakan mesin sehingga Anda akan memiliki akses ke seluruh artikel baru yang diterbitkan di Pangkalan Pengetahuan (Knowledge Base) dalam bahasa yang Anda gunakan. Namun, artikel yang diterjemahkan menggunakan mesin tidak selalu sempurna. Artikel tersebut mungkin memiliki kesalahan kosa kata, sintaksis, atau tata bahasa, hampir sama seperti orang asing yang berbicara dalam bahasa Anda. Microsoft tidak bertanggung jawab terhadap akurasi, kesalahan atau kerusakan yang disebabkan karena kesalahan penerjemahan konten atau penggunaannya oleh para pelanggan. Microsoft juga sering memperbarui perangkat lunak mesin penerjemah.
Klik disini untuk melihat versi Inggris dari artikel ini:319883

Berikan Masukan

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com