Degradé de couleur

Description

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);
}

Codes Sources

A voir également

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.