Avatar billede coolpool Nybegynder
19. december 2010 - 18:21 Der er 6 kommentarer og
1 løsning

Kan man styre farven med RGB i en Win32 Console Application?

Hej Eksperter!

Jeg er i gang med at lave en Win32 Console Application i C++.
Jeg har brug for at ændre farveintensiteten undervejs i programmet på enkelte ord og linjer.

Jeg har forsøgt mig med system("color XY"), men den ændre tekstfarven på hele displayet og der er ikke mulighed for at justere farverne med RGB-paletten.

Er det på nogen måde muligt at ændre enkelte ord og linjer ved at justere på RGB (0-255)?
Avatar billede arne_v Ekspert
19. december 2010 - 18:29 #1
Et old gammelt eksempel fra lageret:

#include <windows.h>
#include <iostream>

int main(void)
{
  HANDLE con = GetStdHandle(STD_OUTPUT_HANDLE);
  SetConsoleTextAttribute(con, FOREGROUND_GREEN | FOREGROUND_INTENSITY | BACKGROUND_RED);
  std::cout << "Green on red\n";
  SetConsoleTextAttribute(con, FOREGROUND_RED | FOREGROUND_INTENSITY | BACKGROUND_BLUE);
  std::cout << "Red on blue\n";
  SetConsoleTextAttribute(con, FOREGROUND_BLUE | FOREGROUND_INTENSITY | BACKGROUND_GREEN);
  std::cout << "Blue on green\n";
  SetConsoleTextAttribute(con, FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
  return 0;
}
Avatar billede arne_v Ekspert
19. december 2010 - 18:31 #2
Fordi kommando prompt er meget gammel tror jeg ikke at du kan sætte dine egne værdier 0-255 0-255 0-255.
Avatar billede coolpool Nybegynder
19. december 2010 - 19:53 #3
Hej Arne,

Tak for svaret! Jeg er lidt forvirret og har forsøgt mig med Google, men ikke rigtigt fundet en løsning. Hvordan justerer jeg intensiteten på farven? FOREGROUND_INTENSITY er defined til 8, men hvis man eksempelvis skriver 7 i stedet giver det en helt anden farve, der ikke ligger op af den oprindelige farve.

Løsningen virker rigtig godt, med at farve enkelte linjer - det er bare super! ;)
Avatar billede arne_v Ekspert
19. december 2010 - 20:33 #4
Jeg har en skummel mistanke om at man ikke kan. Problemet er at en kommando prompt emulerer noget fra dengang hvor en farveskærm betød 16 forskellige farver.
Avatar billede coolpool Nybegynder
19. december 2010 - 20:38 #5
Hmmn, surt :(

Du skal i hvert fald have tak for hjælpen. Du har løst noget af mit problem. Det ser ud som om, det er muligt at bruge en lys og mørk nuance af hver farve.

Jeg forstår ikke helt, hvorfor det ikke er muligt at justere det i RGB, når man kan højreklikke på Kommando-promt genvejen og vælge "Farver"-fanebladet og styre det med RGB med værdierne 0-255.

Hvis der er nogle bud på en RGB-løsning er jeg stadig interesseret :)
Avatar billede killer_bee Nybegynder
30. december 2010 - 10:42 #6
kig på denne tråd:
http://bytes.com/topic/c/answers/694732-c-graphics-help-drawing-line

men jeg tror at arne_v har ret ser ud til at hvis man (fra tråden) kører "color /?" commando i cmd prompt er der kun 16 farver at vælge imellem..
men du kan kigge på den anbefaling længere ned i tråden med at labe en bitmap og styrre den .. (CreateCompatibleDC, CreateCompatibleBitmap, SelectObject and then your SetPixel)

eller lave en win32 app :D
Avatar billede coolpool Nybegynder
30. december 2010 - 12:45 #7
Tak for jeres svar. Jeg endte med at køre på 2 forskellige farver niveauer, da det vist er det eneste en Win32 Console Application understøtter.

Lukker.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester