Home

Introduction aux Bitmaps

 

Principes de Base des Images

 

Introduction

Une image bitmap est une représentation d'une image ou un autre type de graphique sur une fenêtre. Par exemple et comme nous l'avons mentionné dans la leon précédente, elle peut servir à afficher une image régulière sur un formulaire. Voici un exemple :

Un bitmap peut servir comme arrière-plan pour une fenêtre ou une page web. Un bitmap peut également servir à des fins esthétiques pour décorer une bote de dialogue. That s voilà comment il est utilisé dans certaines botes de dialogue. Une autre utilisation régulière de bitmaps est sous forme de petits graphiques sur les barres d'outils :

Toolbar

ApplicationApplication : Présentation des Bitmaps

  1. Démarrez Microsoft Visual c#
  2. Créez une nouvelle Application Windows Forms nommée PictureViewer1
  3. Dans la section contrôles communs de la bote à outils, cliquez sur le bouton, puis cliquez sur le formulaire.
  4. Alors que le bouton est toujours sélectionné sur l'écran, dans la fenêtre Propriétés, modifiez ses caractéristiques comme suit :
    Text : Open a Picture.
    (Name) : btnOpenPicture
     
    Picture Viewer
  5. Dans l'Explorateur de solutions, si nécessaire, développez le nom du projet PictureViewer1.
    Développez le nud Form1.cs et double-cliquez sur Form1.Designer.cs
  6. Déclarez deux variables globales comme suit :
    namespace PictureViewer1  
    {      
         partial class Form1      
         {         
             /// <summary>          
             /// Required designer variable.          
             /// </summary>          
             private System.ComponentModel.IContainer components = null;          
             bool PictureIsLoaded;          
             string strPicture;

La classe bitmap

Pour prendre en charge les images bitmap, la librairie GDI + fournit la classe bitmap. Dans le .NET Framework, le bitmap est représenté par une classe appelée bitmap. La classe bitmap est dérivée de la classe abstraite Image. Les deux classes sont définies dans l'espace de noms System.Drawing de l'assemblage de System.Drawing.dll. La classe bitmap est sérialisable.

L'Obtention d'un bitmap

Il existe deux faons principales que vous pouvez obtenir une image bitmap à utiliser dans votre application : vous pouvez utiliser une image bitmap déjà créée ou vous pouvez concevoir vos propres images. Pour utiliser une image bitmap existante, vous pouvez l'ouvrir en tant que fichier. Pour cela, la classe bitmap fournit le constructeur suivant :

public Bitmap(string filename);

Ce constructeur prend comme argument le nom du fichier ou le chemin d'accès à celui-ci. Voici un exemple d'utilisation :

private void btnPicture_Click(object sender, EventArgs e)  
{      
	 Bitmap bmpPicture = new Bitmap("woman.bmp");  
}

Outre ce constructeur Image, le parent de la classe bitmap, fournit la méthode FromFile() pour ses enfants. Cette méthode est surchargée avec deux versions. La première version utilise la syntaxe suivante :

public static Image FromFile(string filename);

Comme vous pouvez le voir, il s'agit d'une méthode statique que vous appelez sans l'instanciation de la classe. La méthode prend comme argument le nom, ou le chemin d'accès au fichier. Il renvoie un objet Image que vous pouvez alors convertir à un bitmap. Voici un exemple :

private void btnPicture_Click(object sender, PaintEventArgs e)  
{      
	 Bitmap bmpPicture = (Bitmap)Image.FromFile("professionals.png");  
}

ApplicationApplication : Réception d'une image

  1. Copiez l'image suivante dans le dossier PictureView1\PictureViewer1\bin\debug du projet actuel
     
    Horizon
  2. Retournez à l'écran et double-cliquez sur son corps.
  3. Exécutez l'événement comme suit :
private void Form1_Load(object sender, EventArgs e)  
{      
	 PictureIsLoaded = false;      
	 strPicture = "horizon.jpg";  
}

La Création d'un graphique à partir d'une image

Dans notre introduction de graphiques, nous avons vu les différentes manières d'obtenir un objet Graphics, soit à partir de la méthode CreateGraphics() d'une classe contrôle-derived ou du contrôle handle. Outre ces techniques, la classe Graphics fournit une méthode nommée FromImage. Sa syntaxe est la suivante :

public static Graphics FromImage(Image image);

Cette méthode statique prend comme argument une variable de type Image. Par conséquent, lors de l'appel de cette méthode, transmettez une image ou une variable basée sur image. Une fois que la méthode a été appelée, elle produit un objet Graphics.

L'Ouverture d'un fichier image

Dans votre application, vous pouvez également vouloir que l'utilisateur soit capable d'ouvrir une image en tant que fichier. Pour vous aider à cela, vous pouvez utiliser la bote de dialogue Ouvrir le fichier. Pour rappel, pour permettre à l'utilisateur d'ouvrir une image dans votre application, ajoutez un contrôle OpenFileDialog OpenFileDialog à votre formulaire ou créez un par programmation.

Il existe différents types de fichiers graphiques avec différentes extensions. Le type principal de bitmap que vous utiliserez dans Microsoft Windows a l'extension .bmp. Il existe de nombreuses extensions de fichiers graphiques qui prennent en charge Microsoft Windows. Dans nos leons, nous ne pouvons pas examiner chacun d'entre eux, leurs différences, avantages ou inconvénients. Sachez tout simplement que la plupart ou l'ensemble des types de graphiques auxquels vous pouvez penser sont pris en charge.

Lorsque vous fournissez une bote de dialogue Open File à votre application, si vous prenez en charge les différents types de graphiques, construisez un filtre en conséquence. Voici un exemple de Microsoft Paint :

Open

Comme vous pouvez le voir, le fichier bitmap est au dessus de la liste.

ApplicationApplication : Ouverture d'une image

  1. Dans la section Dialogues, de la bote à outils, cliquez sur le bouton OpenFileDialog OpenFileDialoget cliquez sur le formulaire.
  2. Utilisez la fenêtre Propriétés, modifiez les caractéristiques suivantes :
    (Name): ofdPicture
    DefaultExt : BMP
    Filter : Bitmap, fichiers (*.bmp) | *. bmp|JPEG fichiers (*.jpg, *.jpeg) | *. jpg|GIF fichiers (*.gif) | *. gif|PNG fichiers (*.png) | * .png
    Title : Open a piture.
  3. Sur l'écran, double-cliquez sur le bouton et mettez en uvre son événement comme suit :
    private void btnOpenPicture_Click(object sender, EventArgs e)  
    {          
            if (ofdPicture.ShowDialog() == DialogResult.OK)          
            {                  
                    strPicture = this.ofdPicture.FileName;                  
                    PictureIsLoaded = false;                  
                    Invalidate();          
            }  
    }

La Conception d'un bitmap

Par opposition à l'ouverture d'une image existante, vous pouvez créer la vôtre propre, en utilisant les diverses classes et accessoires de la librairie GDI +. Vous pouvez créer une image à l'intérieur du studio de Microsoft Visual c# ou vous pouvez utiliser une application externe.

Pour créer une image bitmap dans Microsoft Visual c#, dans le menu principal, vous pouvez cliquer sur Project - > ajouter un nouvel élément... Dans la section modèles de la bote de dialogue Ajouter un nouvel élément, cliquez sur Fichier bitmap, acceptez le nom proposé ou modifiez le nom et cliquez sur Ajouter. Il vous sera présenté avec une fenêtre que vous pouvez utiliser. Vous concevez soit un bitmap ou vous pouvez coller une image dans le Presse-papiers.

Il existe de nombreuses autres applications plus sophistiquées utilisées pour créer et manipuler des graphiques. Tant que vous pouvez créer une sauvegarde d'une image valide, vous pouvez utiliser cette image dans votre application.

La Présentation d'un bitmap

Une fois que l'image est prête pour la présenter à l'utilisateur, par exemple pour l'afficher dans votre application, vous pouvez appeler la méthode Graphics.DrawImage() qui est surchargée avec autant de versions différentes dont vous pouvez éventuellement avoir besoin. Une des versions de cette méthode a la syntaxe suivante :

public void DrawImage(Image img, int x, int y);

Le premier argument peut être un bitmap que vous pouvez avoir précédemment initialisé. Le deuxième argument spécifie l'emplacement d'où l'image est tirée au sort.

Les caractéristiques d'un bitmap

   

L'emplacement d'une image

Pour représenter une image dans votre application, comme sur un formulaire, l'information principale que vous devez fournir est son emplacement. L'emplacement d'une image est la mesure, en pixel, de son haut et son coin gauche quant à l'objet qui l'héberge :


En utilisant l'emplacement pour préciser l'endroit où afficher une image, vous pouvez transmettre les valeurs x et y comme le deuxième et le troisième argument, respectivement, de la méthode Graphics.DrawImage(). Voici un exemple :

private void btnShowPicture_Click(object sender, EventArgs e)  
{              
			Graphics graph = CreateGraphics();              
			Bitmap bmpPicture = new Bitmap("woman1.jpg");                
			
			graph.DrawImage(bmpPicture, 10, 12);  
}

Par opposition aux nombres entiers, vous pouvez également transmettre des valeurs de l'emplacement comme les nombres en virgule flottante. Cette opération est effectuée à l'aide de 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 graph = CreateGraphics();              
			Bitmap bmpPicture = new Bitmap("woman1.jpg");                
 
			graph.DrawImage(bmpPicture, 10.50f, 12.20F);  
}

Vous pouvez également spécifier l'emplacement comme un Point. Si les propriétés du Point sont des nombres entiers, vous pouvez utiliser la saveur suivante de la méthode Graphics.DrawImage() :

public void DrawImage(Image image, Point point);

Si les valeurs Point sont des nombres décimaux, vous pouvez utiliser la version suivante :

public void DrawImage(Image image, PointF point);

ApplicationApplication : Positionnement d'une image

  1. Cliquez sur le corps de l'écran.
  2. Dans la fenêtre Propriétés, cliquez sur le bouton événements et double-cliquez sur Paint
  3. Exécutez l'événement comme suit :
    private void Form1_Paint(object sender, PaintEventArgs e)  
    {          
    		 if (strPicture != "")          
    		 {                  
    				Image bmpPicture = Image.FromFile(this.strPicture);                  
    				e.Graphics.DrawImage(bmpPicture, 10, 40);                  
    				PictureIsLoaded = true;          
    		 }  
    }
  4. Exécutez l'application
  5. Essayez d'ouvrir une image
  6. Fermez le formulaire et retournez-le à votre environnement de programmation

La taille d'une image

Généralement, une image apparat comme une figure géométrique telle un rectangle :

A Picture


Par le biais de certaines manipulations, une image peut apparatre non rectangulaire. Indépendamment de la perception, une image est censée adapter une figure rectangulaire. A ce titre, une image a une taille représentée par une largeur et une hauteur, en pixels. La largeur d'une image correspond à la distance de sa gauche à ses bordures de droite. La hauteur d'une image est la distance, en pixels, entre son sommet et ses bordures de bas. La taille d'une image peut être illustrée comme suit :

The Size of a Picture


Lors de la création ou de la conception d'un objet bitmap, vous pouvez spécifier sa taille principale. Pour ce faire, vous pouvez utiliser le constructeur suivant :

public Bitmap(int width, int height);

Les arguments de La Largeur et de la hauteur sont comme nous les avons illustrés ci-dessus. Voici un exemple d'utilisation de ce constructeur :

private void btnShowPicture_Click(object sender, EventArgs e)  
{      
	 Bitmap bmpSample = new Bitmap(450, 625);  
}

Si vous avez une image, vous pouvez découvrir ce qui est sa taille. Pour vous aider à connatre la largeur d'une image, la classe Image, le parent de la classe bitmap fournit la propriété Width, ce qui est de type int eger. De la même faon, pour vous donner la hauteur d'une image, la classe Image est équipée d' une propriété nommée Height, qui est également un type int. Voici un exemple d'obtenir les dimensions d'une image :

private void btnShowPicture_Click(object sender, EventArgs e)  
{          
		 OpenFileDialog dlgOpen = new OpenFileDialog();            
 
 
		 if (dlgOpen.ShowDialog() == DialogResult.OK)         
 		 {                 
				string strFilename = dlgOpen.FileName;                 
 				Bitmap bmpPicture = new Bitmap(strFilename);                  
				Graphics graph = CreateGraphics();                    
 
 
				graph.DrawImage(bmpPicture, 120, 12);                  
				int width = bmpPicture.Width;                  
				int height = bmpPicture.Height;                    
 
 
				txtWidth.Text = width.ToString();                  
				txtHeight.Text = height.ToString();         
 		}  
}

The Size of a Picture

Pour obtenir à la fois la largeur et la hauteur comme un seul objet, la classe Image fournit à ses enfants, comme Bitmap, la propriété Size. Comme vous pouvez le deviner, la propriété Size est de type Size

Outre Width, Height et les propriétés Size, pour obtenir la taille d'une image bitmap, vous pouvez accéder à la propriété PhysicalDimensions de la classe Image. Cette propriété est de type SizeF, mais ses valeurs varient selon le type d'image.

La transparence d'une image

Dans la leon précédente, nous avons vu qu'un graphique pouvait être fait des milliers, des millions de couleurs. Lorsque vous affichez une image dans votre application, vous pouvez demander à Microsoft Windows de "voir à travers" une couleur particulière. Voir à travers est appelé la transparence. Il s'agit d'une opération régulièrement nécessaire dans les applications graphiques, le système d'exploitation est déjà équipé pour sélectionner une couleur par défaut qu'elle estime pour la transparence. Dans la plupart des cas, vous pouvez utiliser cette couleur. Sinon, pour votre application, vous pouvez spécifier quelle couleur vous souhaitez utiliser comme "see through".
Pour prendre en charge la transparence de l'image, la classe bitmap est équipée de la méthode MakeTransparent() qui est surchargée avec deux versions. La première version utilise la syntaxe suivante :

public void MakeTransparent();

Lorsque vous appelez cette méthode, elle permet 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 le blanc comme couleur de transparence. Par conséquent, lorsque vous affichez l'image, un spot blanc où la zone est illustrée sur l'image, la zone disparatra pour afficher derrière elle. Voici un exemple :

Building
private void Form1_Paint(object sender, PaintEventArgs e)  
{          
		Bitmap bmpBuilding = new Bitmap("building.bmp");          
		e.Graphics.DrawImage(bmpBuilding, 0, 0);            
 
		
		Bitmap bmpMonument = new Bitmap("monument.bmp");          
		bmpMonument.MakeTransparent();          
		e.Graphics.DrawImage(bmpMonument, 200, 260);  
}

Cela donnerait :

Au lieu d'utiliser par défaut la couleur transparence du système d'exploitation, vous pouvez spécifier votre propre couleur. Pour cela, la classe bitmap fournit une autre version de la méthode MakeTransparent(). Sa syntaxe est la suivante :

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 transmettez votre propre argument. Voici un exemple :

Flying Bird
private void Form1_Paint(object sender, PaintEventArgs e)  
{          
		 Bitmap bmpFlying = new Bitmap("flying.bmp");          
		 e.Graphics.DrawImage(bmpFlying, 0, 0);            
 
		 
		 Bitmap bmpGlobe = new Bitmap("globe.bmp");          
		 bmpGlobe.MakeTransparent(Color.Black);         
 		 e.Graphics.DrawImage(bmpGlobe, 20, 120);  
}

Cela donnerait

Transparent

ApplicationApplication : Utilisation de la transparence d'une image

  1. Pour créer un nouveau programme, dans le menu principal, cliquez sur fichier - > New - > projet...
  2. Dans la liste du milieu, cliquez sur Windows Application
  3. Définissez le nom pour ImageFloater et cliquez sur OK
  4. Dans la section des composantes de la bote à outils, cliquez sur Timer et cliquez sur le formulaire.
  5. Alors que le chronomètre est toujours sélectionné sous la forme, dans la fenêtre Propriétés, définissez sa propriété Enabled True et son intervalle pour 1000
  6. Copiez les images suivantes (cliquez sur l'image de gauche pour ouvrir le véritable dans le navigateur) dans le dossier ImageFloater\ImageFloater\bin\debug au sein du projet actuel
     
    House
  7. Dans le cadre de l'écran, double-cliquez sur le contrôle de HAP et exécutez son événement comme suit :
    private void timer1_Tick(object sender, EventArgs e)  
    {          
            Bitmap bmpArea = new Bitmap(Width, Height);          
            Graphics graphArea = Graphics.FromImage(bmpArea);            
     
     
            Bitmap bmpDiamond = new Bitmap("diamond.bmp");          
            bmpDiamond.MakeTransparent();            
     
            
            Bitmap bmpHouse = new Bitmap("house.bmp");          
            graphArea.DrawImage(bmpHouse, 0, 0);            
            
            Random rnd = new Random();          
            int rndLeft = rnd.Next(bmpHouse.Width);          
            int rndTop = rnd.Next(bmpHouse.Height);          
            graphArea.DrawImage(bmpDiamond, rndLeft, rndTop);            
            
            Graphics painter = Graphics.FromHwnd(Handle);          
            painter.DrawImage(bmpArea, 0, 0);  
    }
  8. Appuyez sur F5 pour exécuter l'application et pour voir le résultat
  9. Fermez le formulaire et le retourner à votre environnement de programmation
 
 
 
 

Précédent Copyright © 2011, yevol.com Suivant