I. Quel est le nom de la nouvelle API Windows 7, qui permet à des applications telles que IE 9 de profiter de l'accélération Hardware ?

Direct2D est une API pour la création de graphiques 2D. Basée sur Direct3D 10, elle offre aux développeurs Win32, une API indépendante de la résolution, et qui utilise la puissance des cartes graphiques de nouvelle génération. Vous pouvez, avec Direct2D, améliorer vos applications GDI existantes, sans être obligé de les réécrire. En effet Direct2D a été conçu pour coopérer avec le GDI et d'autres technologies graphiques. Enfin, Direct2D vous permet d'écrire du contenu Direct2D sur une surface GDI.

Exemple pour dessiner un rectangle en utilisant Direct2D
Sélectionnez
int DessinerUnRectangle()
{
	HRESULT hr;
	CComPtr<ID2D1Factory> fabriqueD2D1;	
	hr=D2D1CreateFactory (D2D1_FACTORY_TYPE_SINGLE_THREADED,
						  &fabriqueD2D1);
	if (FAILED(hr)) return -1;		
	CComPtr<ID2D1HwndRenderTarget> contexteRenduD2D1;
	

	//Récupère la zone cliente
	RECT rc;
	GetClientRect(_hwndParent,&rc);
	D2D1_SIZE_U size = D2D1::SizeU((rc.right - rc.left),(rc.bottom - rc.top));

	//Création du contexte de rendu
	D2D1_RENDER_TARGET_PROPERTIES proprietesRendu=D2D1::RenderTargetProperties();
	D2D1_HWND_RENDER_TARGET_PROPERTIES proprietesHwndRendu=D2D1::HwndRenderTargetProperties (_hwndParent,size);	
	hr=fabriqueD2D1->CreateHwndRenderTarget (proprietesRendu, proprietesHwndRendu, &contexteRenduD2D1);
	if (FAILED(hr)) return -1;
	//Création de la Brosse Verte
	CComPtr<ID2D1SolidColorBrush> brosseVerte;
	hr=contexteRenduD2D1->CreateSolidColorBrush (D2D1::ColorF(D2D1::ColorF::Green), &brosseVerte);
	if (FAILED(hr)) return -1;
	//Création de la Brosse Orange
	CComPtr<ID2D1SolidColorBrush> brosseOrange;
	 
	hr=contexteRenduD2D1->CreateSolidColorBrush (D2D1::ColorF(D2D1::ColorF::Orange), &brosseOrange);
	if (FAILED(hr)) return -1;
	contexteRenduD2D1->BeginDraw ();
	D2D1_RECT_F rectangleVert = D2D1::RectF(
							size.width/4 - 50.0f,
							size.height/2 - 50.0f,
							size.width/2 + 50.0f,
							size.height/2 + 50.0f
							);
												

	contexteRenduD2D1->FillRectangle (rectangleVert,brosseVerte);

	D2D1_RECT_F rectangleOrange = D2D1::RectF(
							size.width/4 - 100.0f,
							size.height/2 - 100.0f,
							size.width/2 + 100.0f,
							size.height/2 + 100.0f
							);
	contexteRenduD2D1->DrawRectangle (rectangleOrange ,brosseOrange); 	
	contexteRenduD2D1->EndDraw ();										 
	return 0;
}
Pour plus d'infos :