Witam! Jestem początkującą programistką i mam pewien problem. W jaki sposób ustawić tło lub napisy na konsoli korzystając z kolorów RGB, np. TextColor(50, 150, 250)? Będę wdzięczna, jeśli ktoś mi pomoże :). (Czy mogłanym prosić o przykładowy kod źródłowy?)
Jeśli się nie mylę, to konsola jest 16-kolorowa. Tak jak tryb tekstowy. Ale pewności nie mam.
Kiedy się otworzy właściwości konsoli, to tam można ustawić kolory z RGB :-/
podejrzewam ze windows zapisuje te ustawienia w rejestrze...
Dawno z TP nie miałem do czynienia.. trzeba gdzieś przeczytać jak jest interpretowany parametr z funkcji TextColor (np. w module, czy jakimś helpie).
Konsola to sy/emulacja trybu tekstowego, wiec ilosc kolorów jest taka sama jak w trybie tekstowym. Obowiązuje paleta 16-to-kolorowa i tylko składowe rgb tych 16-tu kolorów można zmieniac. Początkowy stan będzie zapisany albo (za lofixem) wrejestrze, albo w skrócie do programu. Natomiast zmienić z poziomu kosoli i programu dosowego- 16-bitowego nie jest trudno. podfunkcje funkcji 10h i czesciowo 12h przerwania 10h..
Natomiast zmienić z poziomu kosoli i programu dosowego- 16-bitowego nie jest trudno. podfunkcje funkcji 10h i czesciowo 12h przerwania 10h..
Program jest tworzony w Delphi, więc jest chyba 32bitowy. A mogłabym prosić o przykładowy kod?
Jesli chcesz skorzystac z funkcji analogicznych do TextColor i TextBackground z Pascala, to albo:
1 - Jest gdzies na 4P unit CRT do obslugi windowsowskiej konsoli
2 - ustawianie kolorkow:
var atrybuty:word;
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),atrybuty);
Gdzie atrybuty sa dowolna kombinacja (or) (FOREGROUND,BACKGROUND)_(BLUE,RED,GREEN,INTENSITY), czyli np.:
atrybuty = FOREGROUND_BLUE or FOREGROUND_GREEN or FOREGROUND_INTENSITY or BACKGROUND_GREEN;
Tutaj tekst bedzie mial kolor jasno turkusowy (cos kolo clAqua), jako kombinacja FOREGROUND_BLUE i FOREGROUND_GREEN, a jasny bo jest FOREGROUND_INTENSITY. Tlo bedzie zielone (ciemno), bo jest BACKGROUND_GREEN
Robiąc tak jak mówisz nie uzyskam dowolnego koloru, np RGB(0, 255, 64), tylko koloru takie jak w tym module, o którym była mowa. Windows pozwala ustawić dowolny kolor poprez właściwości konsoli...
Nie mozliwa jest zmiana koloru tekstu/tła konsoli na byle jaki. Jest 16 kolorków, których sie trzeba trzymać (chyba, że głupi jestem):
const
FOREGROUND_BLACK= 0;
FOREGROUND_BLUE= 1;
FOREGROUND_GREEN= 2;
FOREGROUND_TEAL= 3;
FOREGROUND_RED= 4;
FOREGROUND_DARKPURPLE= 5;
FOREGROUND_OLIVE= 6;
FOREGROUND_NORMAL= 7;
FOREGROUND_INTENSITY= 8;
FOREGROUND_VIOLET= 9;
FOREGROUND_LIME= 10;
FOREGROUND_AQUA= 11;
FOREGROUND_DARKORANGE= 12;
FOREGROUND_PURPLE= 13;
FOREGROUND_YELLOW= 14;
FOREGROUND_WHITE= 15;
BACKGROUND_BLACK = $0;
BACKGROUND_BLUE= $10;
BACKGROUND_GREEN=$20;
BACKGROUND_TEAL=$30;
BACKGROUND_RED=$40;
BACKGROUND_DARKPURPLE=$50;
BACKGROUND_OLIVE=$60;
BACKGROUND_NORMAL=$70;
BACKGROUND_INTENSITY=$80;
BACKGROUND_VIOLET=$90;
BACKGROUND_LIME=$A0;
BACKGROUND_AQUA=$B0;
BACKGROUND_DARKORANGE=$C0;
BACKGROUND_PURPLE=$D0;
BACKGROUND_YELLOW=$E0;
BACKGROUND_WHITE=$F0;