Pour fournir un support aux bitmaps, la bibliothèque GDI+ fournit la classe Bitmap. Dans le .NET Framework, la bitmap est représentée par une classe appelée Bitmap. La classe Bitmap est dérivée de la classe abstracte Image. Les deux classes sont définies dans l'espace de nom System.Drawing de l'assemblée System.Drawing.dll. La classe Bitmap est sérializable.
Il existe deux principales manières que vous pouvez utiliser pour obtenir une bitmap à utiliser dans votre application: vous pouvez utiliser une bitmap déjà créée ou vous pouvez concevoir la votre. Pour utiliser une bitmap existante, vous pouvez l'ouvrir comme un fichier. Pour supporter cette approche, la classe Bitmap fournit le constructeur suivant: public Bitmap(string filename); Ce constructeur prend comme argument le nom du fichier ou son chemin. Voici un exemple qui l'utilise: private void btnPicture_Click(object sender, EventArgs e)
{
Bitmap bmpPhoto = new Bitmap("femme.bmp");
}
En dehors de ce constructeur, Image, le parent de la classe Bitmap, fournit la méthode FromFile() à ses enfants. Cette méthode est fournie en deux versions. La première version utilise la syntaxe suivante: public static Image FromFile(string filename); Comme vous pouvez voir, c'est une méthode statique que vous appelez sans instantier la classe. La méthode prend comme argument le nom du fichier ou le chemin du fichier. Elle retourne un objet Image que vous pouvez alors utiliser comme Bitmap. Voici un exemple: private void btnPicture_Click(object sender, PaintEventArgs e)
{
Bitmap bmpPhoto = (Bitmap)Image.FromFile("professionals.png");
}
Dans notre introduction aux graphiques, nous avions vu plusieurs manières d'obtenir an objet Graphics, soit en appelant la méthode CreateGraphics() d'une classe dérivée de Control ou à partir d'un handle du contrôle. En dehors de ces techniques, la classe Graphics fournit une méthode nommée FromImage. Sa syntaxe est: public static Graphics FromImage(Image image); Cette méthode statique prend comme argument une variable de type Image. Par conséquent, quand vous appelez cette méthode, passez une variable de type Image ou d'une classe dérivée d'Image. Après que la méthode ait été appelée, elle produit un cobjet de type Graphics.
Dans votre application, vous pourriez vouloir permettre à l'utilisateur
d'ouvrir une image comme fichier. Pour permettre à l'utilisateur d'ouvrir une
image dans votre application, vous pouvez ajouter un contrôle OpenFileDialog
Une fois qu'une image est prête, pour la présenter à l'utilisateur, vous pouvez appeler la méthode Graphics.DrawImage() qui est disponible en plusieurs différentes versions. L'une des versions de cette méthode utilise la syntaxe suivante: public void DrawImage(Image img, int x, int y); Le premier argument peut être une bitmap. Les deux autres arguments représentent la position que l'image utilisera.
Pour représenter une image dans votre application, tel que sur un formulaire, la principale information que vous devez fournir est sa position. La position d'une image est la mesure, en pixels, de son coin en haut et à gauche par rapport à l'objet qui l'héberge:
A base de cette position, pour spécifier où montrer une image, vous pouvez passer les valeurs x et y comme le second et le troisième arguments, respectivement, de la méthode Graphics.DrawImage(). Voici un exemple: private void btnShowPicture_Click(object sender, EventArgs e)
{
Graphics graphique = CreateGraphics();
Bitmap bmpPhoto = new Bitmap("woman1.jpg");
graphique.DrawImage(bmpPhoto, 10, 12);
}
Vous pouvez aussi passer les valeurs de la position comme nombres décimaux. Pour le faire, vous pouvez appelez la version suivante de la méthode Graphics.DrawImage(): public void DrawImage(Image image, float x, float y); Voici un exemple: private void btnShowPicture_Click(object sender, EventArgs e)
{
Graphics graphique = CreateGraphics();
Bitmap bmpPhoto = new Bitmap("woman1.jpg");
graphique.DrawImage(bmpPhoto, 10.50f, 12.20F);
}
Vous pouvez aussi spécifier la position comme un objet de type Point. Si les propriétés du Point sont des intègres, vous pouvez utiliser la version suivante de la méthode de Graphics.DrawImage(): public void DrawImage(Image image, Point point); Si les valeurs du Point sont des nombres décimaux, vous pouvez utiliser la version suivante: public void DrawImage(Image image, PointF point);
Quand vous créez ou concevez un objet de type Bitmap, vous pouvez spécifier sa taille primaire. Pour le faire, vous pouvez utiliser le constructeur suivant: public Bitmap(int largeur, int hauteur); Les arguments largeur et hauteur peuvent être données comme suit: private void btnShowPicture_Click(object sender, EventArgs e)
{
Bitmap bmpSample = new Bitmap(450, 625);
}
Si vous avez une image, vous pouvez obtenir sa taille. Pour vous assister, la classe Image, le parent de la classe Bitmap, fournit la propriété Width, qui est de type intègre. De la même manière, pour vous donner la hauteur d'une image, la classe Image est équippée d'une propriété nommée Height, qui aussi est de type int. Voici un exemple qui obtenir les dimensions d'une image: private void btnShowPicture_Click(object sender, EventArgs e)
{
OpenFileDialog dlgOuvrir = new OpenFileDialog();
if (dlgOuvrir.ShowDialog() == DialogResult.OK)
{
string strFilename = dlgOuvrir.FileName;
Bitmap bmpPhoto = new Bitmap(strFilename);
Graphics graphique = CreateGraphics();
graphique.DrawImage(bmpPhoto, 120, 12);
int width = bmpPhoto.Width;
int height = bmpPhoto.Height;
txtLargeur.Text = width.ToString();
txtHauteur.Text = height.ToString();
}
}
Pour obtenir la largeur et la hauteur comme un seul objet, la classe Image fournit à ses enfants, tel que Bitmap, la propriété Size. Comme vous pourriez le déviner, la propriété Size est de type Size.
Pour fournir un support de transparence, la classe Bitmap est equippée d'une méthode nommée MakeTransparent qui est fournie en deux versions. La première version utilise la syntaxe suivante: public void MakeTransparent(); Quand vous appelez cette méthode, elle demande au système d'exploitation de choisir la couleur utilisée pour la transparence. Dans la plupart des cas, le système d'exploitation sélectionne la couleur blanche pour la transparence. Par conséquent, quand vous montrez l'image, chaque section qui aurait une couleur (ou tache) blanche disparaittrait pour montrer son arrière. Voici un exemple: private void Form1_Paint(object sender, PaintEventArgs e)
{
Bitmap bmpBuilding = new Bitmap("immeuble.bmp");
e.Graphics.DrawImage(bmpBuilding, 0, 0);
Bitmap bmpMonument = new Bitmap("monument.bmp");
bmpMonument.MakeTransparent();
e.Graphics.DrawImage(bmpMonument, 200, 260);
}
Ceci produirait:
Au lieu d'utiliser la couleur de défaut pour la transparence, vous pouvez spécifier votre propre couleur. Pour supporter ceci, la classe Bitmap fournit une autre version de la méthode MakeTransparent(). Sa syntaxe est: public void MakeTransparent(Color transparentColor); Avec cette méthode, au lieu de laisser le système d'exploitation déterminer la couleur de transparence, vous pouvez passer votre propre couleur comme argument. Voici un exemple: private void Form1_Paint(object sender, PaintEventArgs e)
{
Bitmap bmpFlying = new Bitmap("oiseau.bmp");
e.Graphics.DrawImage(bmpFlying, 0, 0);
Bitmap bmpGlobe = new Bitmap("globe.bmp");
bmpGlobe.MakeTransparent(Color.Black);
e.Graphics.DrawImage(bmpGlobe, 20, 120);
}
Ceci produirait:
|
|
|||||||||||||||||||||||||||||||||||||||||||||||