Pourquoi je n'ai pas de couleurs ? [C++] - Programmation
Marsh Posté le 24-02-2002 à 11:14:02
faut-il charger une palette ou un truc dans le genre (palette classique 16 couleurs ou 256 couleurs, c'est ça qu'il me faut) ?
Aidez moi !!!!!!!!
Marsh Posté le 24-02-2002 à 12:46:23
Ben faut créer des brush, renseigne toi du coté de HBRUSH, et de CreateBrushIndirect de l'API win32
Marsh Posté le 24-02-2002 à 13:01:40
Ah non mais sans parler de Brushs !
D'ailleurs même en créant un HBRUSH rouge, et bien le rectangle est grisé ! -> n&b
Marsh Posté le 24-02-2002 à 14:58:28
Non tu comprends pas :
Je crée un Brush :
HBRUSH b;
b = CreateSolidBrush(...); de couleur ROUGE
selectobject(hdc,b);
bon tu me suis la ?
Après je fais Rectangle(hdc,...); et bien le rectangle n'est pas rouge mais grisé
Marsh Posté le 24-02-2002 à 17:01:16
antsite a écrit a écrit : Non tu comprends pas : Je crée un Brush : HBRUSH b; b = CreateSolidBrush(...); de couleur ROUGE selectobject(hdc,b); bon tu me suis la ? Après je fais Rectangle(hdc,...); et bien le rectangle n'est pas rouge mais grisé ![]() |
En faisant comme ça, (j'utilise les MFC mais ça revient au même) ça a toujours marché chez moi. Le rouge c'est RGBCOLOR(FF,00,00).
Marsh Posté le 24-02-2002 à 17:03:25
Mais oui chez moi aussi quand j'utilise les MFC y a pas de problèmes. Pour une fois que j'utilise pas MFC et ben ça merde et j'ai pas de couleurs ! pour rouge j'ai mis 0x000000FF ce qui revient au même.
Marsh Posté le 24-02-2002 à 17:12:57
antsite a écrit a écrit : Je crée un DC et je peux dessiner dedans. |
comment ?
la méthode standard, c'est appeler BeginPaint() et EndPaint() dans WM_PAINT, ou GetDC() si tu veux dessiner hors d'un message WM_PAINT. si tu as un DC en mémoire, je suis pas bien sûr, mais tu dois devoir faire qqchose comme chopper le DC de l'écran, le passer à CreateCompatibleDC() (puis peut-être après utiliser CreateCompatibleBitmap()).
Marsh Posté le 24-02-2002 à 17:43:36
memDC = CreateCompatibleDC(NULL);
memBM = CreateCompatibleBitmap(memDC,WIDTH,HEIGHT);
oldBM = (HBITMAP)SelectObject(memDC,memBM);
case WM_PAINT:
{
PAINTSTRUCT ps;
RECT r;
HDC hdc = BeginPaint(hwnd,&ps);
GetClientRect(hwnd,&r);
BitBlt(hdc,0,0,r.right,r.bottom,memDC,0,0,SRCCOPY)
;
EndPaint(hwnd,&ps);
}
return 0;
et dans une autre fonction pour dessiner :
HFONT f_cur;
char version[] = "0.5";
Rectangle(memDC,0,0,WIDTH,HEIGHT);
SetBkColor(memDC,0x00FFFFFF);
SetTextColor(memDC,0x000000FF);
f_cur = CreateFont(10,0,0,0,0,0,0,0,0,0,0,0,0,"Arial" );
SelectObject(memDC,f_cur);
TextOut(memDC,4,2,version,strlen(version));
{
HDC hdc = GetDC(hwnd);
BitBlt(hdc,0,0,WIDTH,HEIGHT,memDC,0,0,SRCCOPY);
ReleaseDC(hwnd,hdc);
}
voila en gros mon code et il m'écrite pas en rouge mais en noir
[jfdsdjhfuetppo]--Message édité par antsite--[/jfdsdjhfuetppo]
Marsh Posté le 24-02-2002 à 18:00:51
il se passe quoi si tu dessines directement dans la fenêtre plutôt que dans ton memDC ? si tu essayes d'autres couleurs ?
Marsh Posté le 24-02-2002 à 18:37:50
Avec les autres couleurs c pareil. Comment dessiner direct dans la fenetre ?
Marsh Posté le 24-02-2002 à 18:39:32
à la place de memDC, tu utilises celui-là :
HDC hdc = GetDC(hwnd);
Marsh Posté le 24-02-2002 à 10:46:19
Je crée une fenetre avec CreateWindowEx().
Je crée un DC et je peux dessiner dedans. Seulement je m'aperçois que ma fenetre est en noir & blanc, et que je n'ai pas de couleurs (je ne peux pas dessiner un rectangle rouge par exemple). Quelle fonction appeler pour résoudre ce probléme ?