Visual Studio - GDI și animație

Laborator
7/10 (1 vot)
Conține 1 fișier: doc
Pagini : 4 în total
Cuvinte : 563
Mărime: 87.47KB (arhivat)
Puncte necesare: 0
Profesor îndrumător / Prezentat Profesorului: George Slavan
Universitatea Tehnica a Moldovei Filiera Francofona Informatica

Extras din laborator

1.Tema : Interfaţa GDI

2.Scopul lucrarii : De a studia primitivele oferite de interfaţa GDI

3.Listingul pogramului :

#include <windows.h>

int i,j,dir;

int a[3][6] ={ {123,343,100,163,232,166},{128,15,129,74,234,255},{1,2,3,4,1,4} };

int circle(HWND hwnd,HDC hdc,int i, int j, int dir, RECT rect,int nr)

{

HPEN hBluePen,hRedPen,hYellowPen,hGreenPen,hVioletPen,hOrangePen;

HBRUSH hRedBrush,hBlueBrush,hYellowBrush,hGreenBrush,hVioletBrush,hOrangeBrush;

hBluePen = CreatePen ( PS_SOLID, 1, RGB(0,0,255) );

hRedPen = CreatePen ( PS_SOLID, 1, RGB(255,0,0) );

hGreenPen = CreatePen ( PS_SOLID, 1, RGB(0,255,0) );

hYellowPen = CreatePen ( PS_SOLID, 1, RGB(255,255,0) );

hVioletPen = CreatePen ( PS_SOLID, 1, RGB(255,0,255) );

hOrangePen = CreatePen ( PS_SOLID, 1, RGB(255,90,0) );

hRedBrush = CreateSolidBrush (RGB(255,0,0));

hBlueBrush = CreateSolidBrush (RGB(0,0,255));

hGreenBrush = CreateSolidBrush (RGB(0,255,0));

hYellowBrush = CreateSolidBrush (RGB(255,255,0));

hVioletBrush = CreateSolidBrush (RGB(255,0,255));

hOrangeBrush = CreateSolidBrush (RGB(255,90,0));

if(j+150>rect.bottom)

{

if(dir==1)a[2][nr]=2;else a[2][nr]=3;

}

if(i+150>rect.right)

{

if(dir==2)a[2][nr]=3;else a[2][nr]=4;

}

if(j+50<rect.top)

{

if(dir==3)a[2][nr]=4;else a[2][nr]=1;

}

if(i+50<rect.left)

{

if(dir==4)a[2][nr]=1;else a[2][nr]=2;

}

switch(a[2][nr])

{

case 1:{

a[0][nr]++; a[1][nr]++;break;

}

case 2:{

a[0][nr]++; a[1][nr]--;break;

}

case 3:{

a[0][nr]--; a[1][nr]--;break;

}

case 4:{

a[0][nr]--; a[1][nr]++;break;

}

}

switch(nr)

{

case 0:{SelectObject(hdc,hYellowPen); SelectObject(hdc,hRedBrush); break;}

case 1:{SelectObject(hdc,hBluePen); SelectObject(hdc,hGreenBrush); break;}

case 2:{SelectObject(hdc,hRedPen) ; SelectObject(hdc,hYellowBrush); break;}

case 3:{SelectObject(hdc,hGreenPen); SelectObject(hdc,hBlueBrush); break;}

case 4:{SelectObject(hdc,hOrangePen); SelectObject(hdc,hVioletBrush); break;}

case 5:{SelectObject(hdc,hVioletPen); SelectObject(hdc,hOrangeBrush); break;}

}

Ellipse (hdc,a[0][nr]+50,a[1][nr]+50,a[0][nr]+150,a[1][nr]+150);

DeleteObject(hBluePen);

DeleteObject(hRedPen);

DeleteObject(hYellowPen);

DeleteObject(hGreenPen);

DeleteObject(hVioletPen);

DeleteObject(hOrangePen);

DeleteObject(hRedBrush);

DeleteObject(hGreenBrush);

DeleteObject(hYellowBrush);

DeleteObject(hBlueBrush);

DeleteObject(hVioletBrush);

DeleteObject(hOrangeBrush);

return dir;

}

LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;

int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,

PSTR szCmdLine, int iCmdShow)

{

static TCHAR szAppName[] = TEXT ("Windows - Lab2 Motion") ;

HWND hwnd ;

MSG msg ;

WNDCLASS wndclass ;

wndclass.style = CS_HREDRAW | CS_VREDRAW ;

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 ;

RegisterClass(&wndclass);

hwnd = CreateWindow (szAppName,

TEXT ("Windows - Lab2 Motion"), WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL) ;

i=1; dir=1;

ShowWindow (hwnd, iCmdShow) ;

UpdateWindow (hwnd) ;

while (GetMessage (&msg, NULL, 0, 0))

{

TranslateMessage (&msg) ;

DispatchMessage (&msg) ;

}

return msg.wParam ;

}

LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)

{

HDC hdc ;

static int cxclient, cyclient;

PAINTSTRUCT ps ;

RECT rect;

GetClientRect(hwnd,&rect);

switch (message)

{

case WM_SIZE:

cxclient=LOWORD(lParam);

cyclient=HIWORD(lParam);

return 0;

case WM_PAINT:

hdc = BeginPaint (hwnd, &ps) ;

InvalidateRect (hwnd,NULL,TRUE);

circle(hwnd,hdc,a[0][0],a[1][0],a[2][0],rect,0);

circle(hwnd,hdc,a[0][1],a[1][1],a[2][1],rect,1);

circle(hwnd,hdc,a[0][2],a[1][2],a[2][2],rect,2);

circle(hwnd,hdc,a[0][3],a[1][3],a[2][3],rect,3);

circle(hwnd,hdc,a[0][4],a[1][4],a[2][4],rect,4);

circle(hwnd,hdc,a[0][5],a[1][5],a[2][5],rect,5);

Preview document

Visual Studio - GDI și animație - Pagina 1
Visual Studio - GDI și animație - Pagina 2
Visual Studio - GDI și animație - Pagina 3
Visual Studio - GDI și animație - Pagina 4

Conținut arhivă zip

  • Visual Sudio - GDI si Animatie.doc

Alții au mai descărcat și

Noțiuni introductive C++

Pentru testare se poate folosi urmatorul program: // include obiectele standard // pentru intrari/iesiri cu consola 1 #include <iostream> //...

Crearea aplicațiilor în Visual C++

*Generaţi aplicaţia de tip Dialog (Dialog Based!) Fisa selectînd ca şi tip de proiect MFC AppWizard(exe).Aplicaţia serveşte la realizarea unei fişe...

Hackeri

Hackerii sunt pasionati ai informaticii, care, de obicei au ca scop „spargerea” anumitor coduri, baze de date, pagini web etc. Ei sunt considerati...

Șabloane de proiectare

The Plan • Introducing fundamental patterns (1 week) • 21 design patterns will be covered based on the case study presented in the text book...

Prelucrarea Tablourilor Unidimensionale

Lucrare de laborator Nr. 3 Scopul lucrării: Obţinerea deprinderilor practice de lucru cu tablouri unidimensionale,cunoaşterea particularităţilor...

Medii de Programare

Laborator 1 În acest laborator vom realiza un calculator care să permită simplificarea fracțiilor raționale precum si alte operatii. 1....

Ai nevoie de altceva?