abdoulax
Messages postés875Date d'inscriptionsamedi 17 mai 2003StatutMembreDernière intervention22 juin 2012
-
23 juin 2008 à 17:27
abdoulax
Messages postés875Date d'inscriptionsamedi 17 mai 2003StatutMembreDernière intervention22 juin 2012
-
23 juin 2008 à 18:01
Bonjour,
Je voudrais écrire dans ma fenêtre pixel par pixel. Pour cela je souhaite passer par une zone mémoire temporaire avant de la recopier (une fois tous les pixels modifier) sur l'écran. Je pense donc utilisé un HBITMAP mais j'ai un problème au niveau des couleurs. Dans le code suivant, je ne peux avoir que du noir ou du blanc. Comment avoir 256 couleurs et même plus? De plus, j'aimerai savoir si ce que j'ai fait vous paraît correct?
switch (message) /* handle the messages */
{
case WM_PAINT:
//case WM_CREATE:
hdc=BeginPaint(hwnd,&paintst);
memHdc=CreateCompatibleDC(hdc);
hBitmap = CreateCompatibleBitmap(memHdc,480,272);
SelectObject(memHdc, hBitmap);
color=0x00FFFF00; //0x00bbggrr
for (n=10;n<100;n++)
SetPixel(memHdc,n,10, color);
BitBlt(hdc,0,0,480,272,memHdc,0,0,SRCCOPY);
return 0;
case WM_DESTROY:
PostQuitMessage (0); /* send a WM_QUIT to the message queue */
break;
default: /* for messages that we don't deal with */
return DefWindowProc (hwnd, message, wParam, lParam);
}
return 0;
}
<hr size="2" width="100%" />
Have Fun ...
PostQuitMessage (0); /* send a WM_QUIT to the message queue */
break
;
default
: /* for messages that we don't deal with */
return
DefWindowProc (hwnd, message, wParam, lParam);
}
return
0;
}
Il faut creer ton HBitmap et ton memDC dans le message WM_CREATE et non pas dans le WM_PAINT. Le messaeg paint est envoyer en rafale et il est inutile de le faire a chaque fois. J'ai changer aussi ta maniere de les creer: