FAQ C++/CLI et VC++.Net
FAQ C++/CLI et VC++.NetConsultez toutes les FAQ
Nombre d'auteurs : 29, nombre de questions : 248, création le 22 février 2013
Cette définition est tirée de MSDN
Le Common Language Runtime recourt à une implémentation avancée de l'interface graphique (GDI, Graphics Design Interface) Windows, appelée GDI+. GDI+ vous permet de créer des graphiques, de dessiner du texte et de manipuler des images graphiques en tant qu'objets. Cette interface est conçue pour allier performances et simplicité d'utilisation. Vous pouvez l'utiliser en vue du rendu des images graphiques sur des Windows Forms et des contrôles. GDI+ a entièrement remplacé GDI et constitue aujourd'hui la seule option disponible pour le rendu des graphiques par programme dans les applications Windows Forms.
Lien : Graphiques GDI+
Ce code permet de réaliser simplement une capture d'écran de la fenêtre active et de l'écran en entier.
Le principe est de simuler l'appui sur la touche "Impr écran" puis de récupérer l'image obtenue dans le Presse-Papier. Pour l'exemple donné ci-dessous, les résultats sont affichés dans 2 PictureBox : PBWindow, PBScreen après le click sur un Button BPrint.
private
:
System::
Void BPrint_Click(System::
Object^
sender, System::
EventArgs^
e)
{
Bitmap^
screen;
Bitmap^
window;
// simuler l'appui de la touche PrintScreen
System::Windows::Forms::SendKeys::
SendWait("{PRTSC}"
);
// récupérer l'image obtenue dans le Presse-Papier
window =
safe_cast<
Bitmap^>
(Clipboard::
GetDataObject()->
GetData("Bitmap"
));
// attribuer l'image à PBWindow
PBWindow->
Image =
window;
// simuler le PrintScreen enrichi
System::Windows::Forms::SendKeys::
SendWait("+{PRTSC}"
);
// récupérer l'image obtenue dans le Presse-Papier
screen =
safe_cast<
Bitmap^>
(Clipboard::
GetDataObject()->
GetData("Bitmap"
));
//attribuer l'image à PBScreen
PBScreen->
Image =
screen;
}
Voici une méthode permettant de convertir une image (ici au format Jpeg) en un tableau de bytes :
static
array<
unsigned
char
>
^
Image2ByteArray(Image ^
img)
{
try
{
MemoryStream ^
mstImage =
gcnew MemoryStream();
img->
Save(mstImage, System::Drawing::Imaging::ImageFormat::
Jpeg);
array<
unsigned
char
>
^
bytImage =
mstImage->
GetBuffer();
return
bytImage;
}
catch
(Exception ^
)
{
return
nullptr
;
}
}
Voici une méthode permettant de convertir une image (ici au format Jpeg) en un tableau de bytes :
static
Image ^
ByteArray2Image(array<
unsigned
char
>
^
BArray)
{
try
{
MemoryStream ^
mstImage =
gcnew MemoryStream(BArray);
Image ^
img =
Image::
FromStream(mstImage);
return
img;
}
catch
(Exception ^
)
{
return
nullptr
;
}
}