Ĺadny brzuch
Postanowiłem dodać troche koloru do kilku moich konsolowych aplikacji.
Na chwile obecna znane są mi dwa sposoby na osiągniecie tego, ale żaden nie pozwala na podanie własnej wartości koloru (a na tym właśnie mi zależy):
1. Użycie właściwości Console.ForegroundColor
Przykład:
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace color { class Program { static void Main(string[] args) { Console.ForegroundColor = ConsoleColor.Red; Console.Write("Jakis tekst"); Console.Read(); } } }W tym wypadku jesteśmy ograniczeni jedynie do kilkudziesięciu "podstawowych" kolorów.
2. Inportowanie kernel32.dll i posłużenie sie standardowymi funkcjami winapi.
Przykład:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Runtime.InteropServices; namespace color { class Program { [DllImport("kernel32.dll")] public static extern bool SetConsoleTextAttribute(IntPtr hConsoleOutput, int wAttributes); [DllImport("kernel32.dll")] public static extern IntPtr GetStdHandle(uint nStdHandle); static void Main(string[] args) { uint STD_OUTPUT_HANDLE = 0xfffffff5; IntPtr hConsole = GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleTextAttribute(hConsole, 236); Console.WriteLine("Jakis text"); Console.Read(); } } }W tym wypadku lista dostępnych kolorów jest dużo większa. Ale nadal nie jest to taka totalna wolność, a i konieczność importu dll średnio mi sie widzi.
Wracając do mojego problemu - zależy mi na możliwości zdefiniowiania własnego koloru dla tekstu. Jeśli ktoś zna jakiś sposób to bedę wdzięczny za jego podanie.
W System.Drawing.Color.FromKnownColor oraz System.Drawing.Color jest zdefiniowanych mnóstwo różnych kolorów, jest również możliwość tworzenia własnych w rgb. Wydaje mi się, że skoro nie zostały one przeniesione do ConsoleColor, to po prostu nie ma możliwości ich wyświetlenia na konsoli windowsowskiej.
Z poziomu c++ też nie ma zbyt wielkiego wyboru: http://www.programme...eadmessage.aspx (plik console.h)
Wydaje mi się, że skoro nie zostały one przeniesione do ConsoleColor, to po prostu nie ma możliwości ich wyświetlenia na konsoli windowsowskiej.
Tez mam takie wrażenie. Pozostaje mi więc zadowolic sie tym co mam.
zanotowane.pl doc.pisz.pl pdf.pisz.pl zsf.htw.pl
Na chwile obecna znane są mi dwa sposoby na osiągniecie tego, ale żaden nie pozwala na podanie własnej wartości koloru (a na tym właśnie mi zależy):
1. Użycie właściwości Console.ForegroundColor
Przykład:
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace color { class Program { static void Main(string[] args) { Console.ForegroundColor = ConsoleColor.Red; Console.Write("Jakis tekst"); Console.Read(); } } }W tym wypadku jesteśmy ograniczeni jedynie do kilkudziesięciu "podstawowych" kolorów.
2. Inportowanie kernel32.dll i posłużenie sie standardowymi funkcjami winapi.
Przykład:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Runtime.InteropServices; namespace color { class Program { [DllImport("kernel32.dll")] public static extern bool SetConsoleTextAttribute(IntPtr hConsoleOutput, int wAttributes); [DllImport("kernel32.dll")] public static extern IntPtr GetStdHandle(uint nStdHandle); static void Main(string[] args) { uint STD_OUTPUT_HANDLE = 0xfffffff5; IntPtr hConsole = GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleTextAttribute(hConsole, 236); Console.WriteLine("Jakis text"); Console.Read(); } } }W tym wypadku lista dostępnych kolorów jest dużo większa. Ale nadal nie jest to taka totalna wolność, a i konieczność importu dll średnio mi sie widzi.
Wracając do mojego problemu - zależy mi na możliwości zdefiniowiania własnego koloru dla tekstu. Jeśli ktoś zna jakiś sposób to bedę wdzięczny za jego podanie.
W System.Drawing.Color.FromKnownColor oraz System.Drawing.Color jest zdefiniowanych mnóstwo różnych kolorów, jest również możliwość tworzenia własnych w rgb. Wydaje mi się, że skoro nie zostały one przeniesione do ConsoleColor, to po prostu nie ma możliwości ich wyświetlenia na konsoli windowsowskiej.
Z poziomu c++ też nie ma zbyt wielkiego wyboru: http://www.programme...eadmessage.aspx (plik console.h)
Wydaje mi się, że skoro nie zostały one przeniesione do ConsoleColor, to po prostu nie ma możliwości ich wyświetlenia na konsoli windowsowskiej.
Tez mam takie wrażenie. Pozostaje mi więc zadowolic sie tym co mam.