| auteur : cardi |
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+ (MSDN)
|
| auteur : sam_XIII |
Voici une méthode permettant de convertir une image en un tableau de bytes :
public static Byte[ ] Image2ByteArray (Image img)
{
try
{
MemoryStream mstImage = new MemoryStream ();
img. Save (mstImage, System. Drawing. Imaging. ImageFormat. Jpeg);
Byte[ ] bytImage = mstImage. GetBuffer ();
return bytImage;
}
catch (Exception ex)
{
return null ;
}
}
|
|
| auteur : sam_XIII |
Voici une méthode permettant de convertir un tableau de bytes en image :
public static Image ByteArray2Image (Byte[ ] BArray)
{
try
{
MemoryStream mstImage = new MemoryStream (BArray);
Image img = Image. FromStream (mstImage);
return img;
}
catch (Exception ex)
{ return null ; }
}
|
|
| auteur : HULK |
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 clic sur un Button BPrint.
private void BPrintClick (object sender, System. EventArgs e)
{
Bitmap screen;
Bitmap window;
SendKeys. SendWait (" {PRTSC} " );
window = ((Bitmap)(Clipboard. GetDataObject (). GetData (" Bitmap " )));
PBWindow. Image = window;
SendKeys. SendWait (" +{PRTSC} " );
screen = ((Bitmap)(Clipboard. GetDataObject (). GetData (" Bitmap " )));
PBScreen. Image = screen;
}
|
|
| auteur : cardi |
La classe Graphics possède une méthode MeasureString permettant de connaître la taille exacte d'une chaine de caractères en fonction de la Font utilisée :
System. Drawing. Graphics g = textBox1. CreateGraphics ();
System. Drawing. SizeF objSizeF = g. MeasureString (textBox1. Text, textBox1. Font);
System. Windows. Forms. MessageBox. Show (string . Format (" Votre texte '{0}' a une longueur de {1} pixeles. " , textBox1. Text, objSizeF. Width));
|
|
lien : System.Graphics.MeasureString (MSDN)
|
| auteur : theMonz31 |
Voilà une petite classe pour faire cela...
L'idée (simple) est de pouvoir fournir une Region associée à une image.
L'intérêt est de pouvoir ensuite avoir des forms, ou des contrôles qui auront
pour zone de sélection l'image.
Voici le code
using System;
using System. Collections. Generic;
using System. Text;
using System. Drawing;
using System. Drawing. Drawing2D;
using System. Drawing. Imaging;
using System. IO;
namespace RegionBuilder
{
public static class Tools
{
public static Region NewRegionForm (Color cTrans, string filename, Rectangle clientRec)
{
if (File. Exists (filename))
{
Bitmap bmp = new Bitmap (filename);
return NewRegionForm (cTrans, bmp, clientRec);
}
return new Region (clientRec);
}
public static Region NewRegionForm (Color cTrans, Bitmap b, Rectangle clientRec)
{
int ct = cTrans. ToArgb ();
Rectangle r = new Rectangle (0 , 0 , 1 , 1 );
GraphicsPath gpRemoved = new GraphicsPath (FillMode. Winding);
BitmapData bd = b. LockBits (new Rectangle (0 , 0 , b. Width, b. Height), ImageLockMode. ReadOnly, PixelFormat. Format32bppArgb);
int h = b. Height;
int w = b. Width;
int [ , ] mat = new int [ h, w] ;
int curj = 0 ;
int nb = 0 ;
bool canAdd = false ;
unsafe
{
int * pi = (int * )bd. Scan0. ToInt32 () - 1 ;
for (int i = 0 ; i < h; i + = 1 )
{
for (int j = 0 ; j < w; j + = 1 )
{
pi+ + ;
if (* pi = = ct)
{
r. X = j;
r. Y = i;
mat[ i, j] = 1 ;
if (canAdd)
{
mat[ i, j] = 0 ;
nb+ + ;
}
else
{
mat[ i, curj] = nb;
curj = j;
canAdd = true ;
nb = 1 ;
}
}
else
{
mat[ i, j] = - 1 ;
if (canAdd)
{
canAdd = false ;
mat[ i, curj] = nb;
nb = 0 ;
}
curj = j;
}
}
if (canAdd)
{
canAdd = false ;
mat[ i, curj] = nb;
nb = 0 ;
curj = 0 ;
}
}
}
for (int i = 0 ; i < h; i + = 1 )
{
for (int j = 0 ; j < w; j + = 1 )
{
if (mat[ i, j] > 1 )
{
r. Width = mat[ i, j] ;
r. X = j;
r. Y = i;
j + = (mat[ i, j] - 1 );
gpRemoved. AddRectangle (r);
}
else if (mat[ i, j] = = 1 )
{
r. Width = 1 ;
r. X = j;
r. Y = i;
gpRemoved. AddRectangle (r);
}
}
}
b. UnlockBits (bd);
Region a = null ;
a = new Region (clientRec);
a. Exclude (gpRemoved);
gpRemoved. Dispose ();
return a;
}
}
}
|
|
Consultez les autres F.A.Q's
Les sources présentés sur cette page sont libres de droits,
et vous pouvez les utiliser à votre convenance. Par contre cette page de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs.
Copyright ©2010
Developpez LLC. Tous droits réservés Developpez LLC.
Aucune reproduction, même partielle, ne peut être faite de ce site et de
l'ensemble de son contenu : textes, documents et images sans l'autorisation
expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans
de prison et jusqu'à 300 000 E de dommages et intérêts.
Cette page est déposée à la SACD.
|