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.
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 :
- MSDN : http://msdn.microsoft.com/fr-fr/windows/default.aspx
- Le coach Windows 7 : http://msdn.microsoft.com/fr-fr/windows/msdn.coach.windows7
- Kit de développement pour Windows 7 : http://msdn.microsoft.com/fr-fr/windows/gg398052.aspx