Voila un programme qui affiche un degradé de couleur.
Bon l'algorithme est le plus bourrin qu'il soit !
Source / Exemple :
//***********************************************
#include <windows.h>
#include "resource.h"
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
//***********************************************
int WINAPI WinMain(
HINSTANCE hInstance,
HINSTANCE hPrevInstance,
PSTR szCmdLine,
int iCmdShow
)
{
static char szAppName[] = "Couleur";
HWND hwnd;
MSG msg;
WNDCLASSEX wndclass;
wndclass.cbSize = sizeof (wndclass);
wndclass.style = 0;
wndclass.lpfnWndProc = WndProc;
wndclass.cbClsExtra = 0;
wndclass.cbWndExtra = 0;
wndclass.hInstance = hInstance;
wndclass.hIcon = LoadIcon(NULL,IDI_APPLICATION);
wndclass.hCursor = LoadCursor(NULL, IDC_ARROW);
wndclass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
wndclass.lpszMenuName = NULL;
wndclass.lpszClassName = szAppName;
wndclass.hIconSm = LoadIcon(NULL,IDI_APPLICATION);
RegisterClassEx(&wndclass);
hwnd = CreateWindow(
szAppName, // nom de la classe
szAppName, // titre de la fenetre
WS_OVERLAPPED | WS_SYSMENU, // style de la fenetre
CW_USEDEFAULT, // position initiale en x
CW_USEDEFAULT, // position initiale en y
512, // largeur initiale
512, // hauteur initiale
NULL, // handle de la fenetre mere
NULL, // handle du menu de la fenetre
hInstance, // handle de l'instance
NULL); // parametres de creation
ShowWindow(hwnd,iCmdShow);
UpdateWindow(hwnd);
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
LRESULT CALLBACK WndProc(
HWND hwnd,
UINT iMsg,
WPARAM wParam,
LPARAM lParam
)
{
switch (iMsg)
{
case WM_CREATE:
{
return 0;
}
case WM_PAINT:
{
HDC hdc;
PAINTSTRUCT ps;
RECT rect;
int x,y;
hdc = BeginPaint(hwnd,&ps);
GetClientRect(hwnd,&rect);
// les carres sont disposes comme ci-dessous
// 1 2
// 3 4
//
// 1
for(x=rect.left;x<256;x++)
{
for(y=rect.top;y<256;y++)
{
SetPixel(hdc,x,y,RGB(x & 255,0,y & 255));
}
}
// 2
for(x=max(rect.left,256);x<512;x++)
{
for(y=rect.top;y<256;y++)
{
SetPixel(hdc,x,y,RGB(~(x & 255),0,y & 255));
}
}
// 3
for(x=rect.left;x<256;x++)
{
for(y=max(rect.top,256);y<512;y++)
{
SetPixel(hdc,x,y,RGB(x & 255,0,~(y & 255)));
}
}
// 4
for(x=max(rect.left,256);x<512;x++)
{
for(y=max(rect.top,256);y<512;y++)
{
SetPixel(hdc,x,y,RGB(~(x & 255),0,~(y & 255)));
}
}
EndPaint(hwnd,&ps);
return 0;
}
case WM_COMMAND:
{
break;
}
case WM_DESTROY:
{
PostQuitMessage (0);
return 0;
}
}
return DefWindowProc(hwnd,iMsg,wParam,lParam);
}
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.