Éléments graphiques pour les utilisateurs de Visual Basic 6.0
Mise à jour : novembre 2007
Dans Visual Basic 6.0, plusieurs méthodes et propriétés graphiques sont utilisées pour dessiner sur un contrôle Form ou PictureBox. Dans Visual Basic 6.0, les graphismes sont basés sur les API interface GDI (Graphics Device Interface) de Windows.
Dans Visual Basic 2008, les graphiques sont fournis par l'espace de noms System.Drawing qui encapsule des API GDI+ (Graphics Device Interface +). GDI+ développe les possibilités graphiques de Visual Basic 6.0, mais les méthodes ne sont pas compatibles.
Différences conceptuelles
Dans Visual Basic 6.0, les méthodes graphiques s'appliquent uniquement à l'objet Form et au contrôle PictureBox.
Dans Visual Basic 2008, les méthodes graphiques s'appliquent à des formulaires et à tout contrôle qui prend en charge l'événement Paint, y compris les contrôles PictureBox, Panel et GroupBox. En outre, les méthodes graphiques s'appliquent à tous les contrôles qui prennent en charge la propriété OwnerDraw, y compris les contrôles ListView, TreeView et Button.
Propriété AutoRedraw
Dans Visual Basic 6.0, les méthodes graphiques peuvent être appelées à partir de toutes les procédures événementielles ; la propriété AutoRedraw est utilisée pour rendre des graphiques persistants lorsque les méthodes graphiques sont appelées d'un événement autre que Paint.
Dans Visual Basic 2008, les méthodes graphiques doivent être appelées uniquement depuis la procédure événementielle Paint, ou pour certains contrôles owner-drawn, depuis plusieurs procédures événementielles Draw (DrawItem, DrawSubItem, etc.). La propriété AutoRedraw n'est plus prise en charge et n'est pas nécessaire parce que les événements Paint et Draw rendre automatiquement les graphiques persistants.
Propriété ClipControls
Dans Visual Basic 6.0, la propriété ClipControls est utilisée pour contrôler la peinture d'un formulaire ou d'un contrôle. Si True, seules les zones récemment exposées sont repeintes, en théorie, avec une amélioration des performances.
Il n'existe aucun équivalent pour la propriété ClipControls dans Visual Basic 2008 ; l'amélioration des performances dans GDI+ et les cartes vidéo à jour la rendent inutile.
Propriété DrawMode
Dans Visual Basic 6.0, la propriété DrawMode contrôle la couleur d'un objet Graphics lorsqu'il dessine un modèle sur un autre. Cette propriété affecte des affichages monochromes ou de faible résolution (256 couleurs ou moins).
Il n'existe aucun équivalent pour la propriété DrawMode dans Visual Basic 2008 ; elle n'est plus nécessaire avec les affichages actuels.
Propriété DrawStyle
Dans Visual Basic 6.0, la propriété DrawStyle contrôle l'apparence d'une ligne dessinée à l'aide de la méthode Line. Si la propriété DrawWidth a une valeur supérieure à 1, la propriété DrawStyle n'a aucun effet et la ligne sera toujours unie.
Dans Visual Basic 2008, l'apparence d'une ligne est contrôlée par la définition de la propriété DashStyle d'une classe System.Drawing.Pen utilisée par l'une des méthodes DrawLine ; la largeur de ligne n'a aucune conséquence sur cette propriété.
Propriété DrawWidth
Dans Visual Basic 6.0, la propriété DrawWidth détermine l'épaisseur d'une ligne en pixels ; la propriété DrawWidth est généralement définie avant l'exécution d'une méthode graphique.
Dans Visual Basic 2008, la propriété Pen.Width d'un contrôle System.Drawing.Pen détermine l'épaisseur de ligne ; vous pouvez définir la propriété Width comme paramètre en créant Pen ou en définissant Pen.Width une fois Pen créé. Si aucune propriété Pen.Width n'est spécifiée, la largeur par défaut est de 1 pixel.
Propriété Image
Dans Visual Basic 6.0 la propriété Image d'un formulaire ou d'un contrôle PictureBox retourne un handle à une bitmap ; le handle peut être assigné à la propriété Picture ou utilisé comme valeur pour passer aux appels d'API Windows.
Dans Visual Basic 2008, les bitmaps ne possèdent plus de handle ; l'image bitmap réelle est passée en tant qu'objet de type Bitmap. Un contrôle Bitmap peut être assigné à la propriété Image d'un contrôle PictureBox, mais il ne peut pas être passé aux appels d'API Windows.
Méthode Line
Dans Visual Basic 6.0, la méthode Line est utilisée pour dessiner un rectangle en spécifiant les coordonnées des coins supérieur et inférieur gauches, avec un argument B optionnel. La propriété FillColor est utilisée pour remplir un rectangle d'une couleur unie, et la propriété FillStyle remplit le rectangle de hachures croisées.
Dans Visual Basic 2008, la méthode DrawRectangles est utilisée pour dessiner la bordure d'un rectangle et la méthode FillRectangle pour le remplir. FillRectangle prend un objet Brush comme paramètre. SolidBrush remplace la propriété FillColor et les membres de la classe HatchBrush remplacent la propriété FillStyle.
Méthode Point
Dans Visual Basic 6.0, la méthode Point d'un formulaire ou d'un contrôle PictureBox est utilisée pour retourner une valeur de couleur pour le pixel à un point spécifié. Bien que la méthode Point puisse être utilisée pour les formulaires ou les contrôles qui ne contiennent pas d'image, elle est utilisée plus souvent pour récupérer une couleur d'une bitmap assignée à la propriété Picture.
Dans Visual Basic 2008, la méthode Point n'existe plus. Vous pouvez utiliser la méthode M:System.Drawing.Bitmap.GetPixel(System.Int32,System.Int32) pour récupérer une valeur de couleur d'une bitmap. Pour les formulaires ou les contrôles qui ne contiennent pas d'image, vous pouvez interroger la propriété BackColor.
Méthode Print
Dans Visual Basic 6.0, la méthode Print est utilisée pour afficher du texte sur un formulaire ou un contrôle PictureBox. La police utilisée pour afficher le texte est déterminée par les propriétés Font du formulaire ou du contrôle, et la couleur est déterminée par la propriété ForeColor. La méthode Print n'offre aucun contrôle de l'emplacement du texte et ne peut afficher le texte qu'horizontalement.
Dans Visual Basic 2008, la méthode DrawString est utilisée pour afficher du texte. La police est déterminée par un objet Font et la couleur par un objet Brush ; tous les deux sont passés comme paramètres à la méthode DrawString. La méthode DrawString dispose également des paramètres X et Y qui déterminent l'emplacement de début du texte. Il existe également un paramètre Format optionnel qui utilise un objet StringFormat vous permettant d'afficher le texte verticalement.
Méthode PSet
Dans Visual Basic 6.0, la méthode PSet est utilisée pour modifier la couleur d'un pixel sur un formulaire ou un contrôle PictureBox. Si la propriété DrawWidth a une valeur supérieure à 1, la méthode PSet dessine un cercle plein. Un paramètre optionnel est utilisé pour spécifier la couleur ; s'il est omis, le paramètre ForeColor est utilisé.
Dans Visual Basic 2008, la méthode PSet n'a aucun équivalent. Pour modifier la couleur d'un seul pixel sur un formulaire ou sur le contrôle PictureBox, utilisez la méthode DrawEllipse pour dessiner un cercle avec une hauteur et une largeur de 1 pixel. Pour dupliquer les fonctionnalités de PSet lorsque DrawWidth est supérieur à 1, utilisez la méthode FillEllipse.
Modifications des codes graphiques
Les exemples de code ci-dessous illustrent les différences entre les techniques de codage dans Visual Basic 6.0 et dans Visual Basic 2008.
Dessin d'une courbe
Le code suivant montre comment dessiner une ligne sur un formulaire au moment de l'exécution. Dans l'exemple Visual Basic 6.0, la méthode Line est utilisée; elle utilise comme arguments les coordonnées X et Y des points de début et de fin et, éventuellement, une couleur. L'exemple Visual Basic 2008 utilise la méthode DrawLine qui utilise comme arguments un objet Pens et les coordonnées X et Y des points de début et de fin.
Remarque : |
---|
Dans Visual Basic 6.0, l'unité de mesure par défaut correspond à des twips ; dans Visual Basic 2008, il s'agit de pixels. |
' Visual Basic 6.0
Private Sub Form_Paint()
' Draw a solid black line 200 twips from the top of the form.
Line (0, 200) - (ScaleWidth, 200), vbBlack
End Sub
' Visual Basic
Private Sub Form1_Paint(ByVal sender As Object, ByVal e _
As System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint
' Draw a solid black line 25 pixels from the top of the form.
e.Graphics.DrawLine(Pens.Black, 0, 25, Me.Width, 25)
End Sub
Dessin d'une ligne en pointillés
Le code suivant montre comment dessiner une ligne en pointillés sur un formulaire au moment de l'exécution. Dans l'exemple Visual Basic 6.0, la propriété DrawStyle détermine l'apparence de la ligne. L'exemple Visual Basic 2008 utilise un objet Pen, en affectant une valeur à sa propriété DashStyle pour déterminer l'apparence.
Remarque : |
---|
Dans Visual Basic 6.0, l'unité de mesure par défaut correspond à des twips ; dans Visual Basic 2008, il s'agit de pixels. |
' Visual Basic 6.0
Private Sub Form_Paint()
' Draw a dotted line 200 twips from the top of the form.
Me.DrawStyle = vbDot
Line (0, 200) - (ScaleWidth, 200), vbBlack
End Sub
' Visual Basic
Private Sub Form1_Paint1(ByVal sender As Object, ByVal e As _
System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint
' Draw a dotted black line 25 pixels from the top of the form.
Dim LPen As New System.Drawing.Pen(System.Drawing.Color.Black)
LPen.DashStyle = Drawing2D.DashStyle.Dot
e.Graphics.DrawLine(LPen, 0, 25, Me.Width, 25)
End Sub
Contrôle de l'épaisseur de ligne
Le code suivant montre comment dessiner des lignes de différentes épaisseurs sur un formulaire au moment de l'exécution. Dans l'exemple Visual Basic 6.0, la propriété DrawWidth est utilisée. L'exemple Visual Basic 2008 utilise la propriété Width de l'objet Pens.
' Visual Basic 6.0
Private Sub Form_Paint()
' Draw a line with a thickness of 1 pixel.
DrawWidth = 1
Line (0, 200)-(ScaleWidth, 200), vbBlack
' Draw a line with a thickness of 5 pixels.
DrawWidth = 5
Line (0, 400)-(ScaleWidth, 400), vbBlack
' Draw a line with a thickness of 10 pixels.
DrawWidth = 10
Line (0, 600)-(ScaleWidth, 600), vbBlack
End Sub
' Visual Basic
Private Sub Form1_Paint2(ByVal sender As Object, ByVal e As _
System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint
' Draw a line with a thickness of 1 pixel.
Dim TPen As New System.Drawing.Pen(System.Drawing.Color.Black, 1)
e.Graphics.DrawLine(TPen, 0, 25, Me.Width, 25)
' Draw a line with a thickness of 5 pixels.
TPen.Width = 5
e.Graphics.DrawLine(TPen, 0, 50, Me.Width, 50)
' Draw a line with a thickness of 10 pixels.
TPen.Width = 10
e.Graphics.DrawLine(TPen, 0, 75, Me.Width, 75)
End Sub
Dessin d'un cercle
Le code suivant montre comment dessiner un cercle sur un formulaire au moment de l'exécution. Dans l'exemple Visual Basic 6.0, la méthode Circle est utilisée ; elle utilise comme arguments les coordonnées X et Y du centre, du rayon et, éventuellement, une couleur. L'exemple Visual Basic 2008 utilise la méthode DrawEllipse qui prend un objet Pen, les coordonnées X et Y du coin supérieur gauche du rectangle englobant ainsi que la largeur et la hauteur comme arguments.
Remarque : |
---|
Dans Visual Basic 6.0, l'unité de mesure par défaut correspond à des twips ; dans Visual Basic 2008, il s'agit de pixels. |
' Visual Basic 6.0
Private Sub Form_Paint()
' Draw a 1000 twip diameter red circle
Circle (500, 500), 500, vbRed
End Sub
' Visual Basic
Private Sub Form1_Paint3(ByVal sender As Object, ByVal e As _
System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint
' Draw a 70 pixel diameter red circle.
e.Graphics.DrawEllipse(Pens.Red, 0, 0, 70, 70)
End Sub
Dessin d'un rectangle plein
Le code suivant montre comment dessiner deux rectangles sur un formulaire au moment de l'exécution, un avec un remplissage uni et l'autre avec un des hachures croisées. Dans l'exemple Visual Basic 6.0, les propriétés FillColor et FillStyle sont utilisées en même temps que la méthode Line. Un appel à la méthode Line à l'aide du paramètre B permet de dessiner un rectangle.
L'exemple Visual Basic 2008 utilise la méthode Graphics.Rectangle pour dessiner le cadre et la méthode Graphics.FillRectangle qui prend un objet Brush comme argument. Dans cet exemple, les contrôles SolidBrush et HatchBrush sont utilisés.
Remarque : |
---|
Dans Visual Basic 6.0, l'unité de mesure par défaut correspond à des twips ; dans Visual Basic 2008, il s'agit de pixels. |
' Visual Basic 6.0
Private Sub Form_Paint()
' Draw a solid red rectangle.
FillColor = vbRed
FillStyle = vbSolid
Line (10, 10)- (1000, 500), vbRed, B
' Draw a rectangle filled with a crosshatch pattern.
FillColor = vbBlack
FillStyle = vbCross
Line (10, 500)- (1000, 1000), vbBlack, B
End Sub
' Visual Basic
Private Sub Form1_Paint4(ByVal sender As Object, ByVal e As _
System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint
' Draw a solid red rectangle.
Dim SBrush As New System.Drawing.SolidBrush _
(System.Drawing.Color.Red)
e.Graphics.DrawRectangle(Pens.Red, 2, 2, 70, 40)
e.Graphics.FillRectangle(SBrush, 2, 2, 70, 40)
' Draw a rectangle filled with a crosshatch pattern.
Dim HBrush As New System.Drawing.Drawing2D.HatchBrush( _
System.Drawing.Drawing2D.HatchStyle.Cross, _
System.Drawing.Color.Black, System.Drawing.Color.Transparent)
e.Graphics.DrawRectangle(Pens.Black, 2, 40, 70, 40)
e.Graphics.FillRectangle(HBrush, 2, 40, 70, 40)
End Sub
Affichage d'une image sur un formulaire
Le code suivant illustre des méthodes graphiques permettant d'afficher une image sur un formulaire au moment de l'exécution. L'exemple Visual Basic 6.0 utilise la méthode PaintPicture. L'exemple Visual Basic 2008 utilise la méthode DrawImage.
' Visual Basic 6.0
Private Sub Form_Paint()
' Create a stdPicture object.
Dim Pict1 As New stdPicture
Pict1 = LoadPicture("C:\Windows\Greenstone.bmp")
PaintPicture Pict1, 0, 0
End Sub
' Visual Basic
Private Sub Form1_Paint5(ByVal sender As Object, ByVal e As _
System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint
' Create a Bitmap object.
Dim Pict1 As New Bitmap("C:\Windows\Greenstone.bmp")
e.Graphics.DrawImage(Pict1, 0, 0)
End Sub
Affichage de texte dans un formulaire
Le code suivant illustre des méthodes graphiques permettant d'afficher une chaîne de texte sur un formulaire au moment de l'exécution. L'exemple Visual Basic 6.0 utilise la méthode Print. L'exemple Visual Basic 2008 utilise la méthode DrawString.
' Visual Basic 6.0
Private Sub Form_Paint()
Me.Font.Size = 24
Me.Font.Bold = True
Me.ForeColor = vbRed
Print "Hello World!"
End Sub
' Visual Basic
Private Sub Form1_Paint6(ByVal sender As Object, ByVal e As _
System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint
Dim TextFont As New System.Drawing.Font("Arial", 24, FontStyle.Bold)
Dim TextBrush As New System.Drawing.SolidBrush(System.Drawing.Color.Red)
e.Graphics.DrawString("Hello World!", TextFont, TextBrush, 10, 10)
TextFont.Dispose()
TextBrush.Dispose()
End Sub
Définition de la hauteur et de la largeur d'une chaîne
Le code suivant illustre des méthodes graphiques permettant de déterminer la taille d'une chaîne sur un formulaire au moment de l'exécution, et ensuite de dessiner un rectangle pour l'englober. L'exemple Visual Basic 6.0 utilise les méthodes TextHeight et TextWidth. L'exemple Visual Basic 2008 utilise la méthode MeasureString qui retourne une structure SizeF.
' Visual Basic 6.0
Private Sub Form_Paint()
Me.Font.Size = 24
Me.Font.Bold = True
Me.ForeColor = vbRed
Print "Hello World!"
Line (0, 0)-(TextWidth("Hello World!"), _
TextHeight("Hello World!")), vbBlack, B
End Sub
' Visual Basic
Private Sub Form1_Paint7(ByVal sender As Object, ByVal e As _
System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint
Dim TextFont As New System.Drawing.Font("Arial", 24, FontStyle.Bold)
Dim TextBrush As New System.Drawing.SolidBrush(System.Drawing.Color.Red)
e.Graphics.DrawString("Hello World!", TextFont, TextBrush, 10, 10)
Dim TextSize As New System.Drawing.SizeF
TextSize = e.Graphics.MeasureString("Hello World!", TextFont)
e.Graphics.DrawRectangle(Pens.Black, 10, 10, TextSize.Width, TextSize.Height)
TextFont.Dispose()
TextBrush.Dispose()
End Sub
Dessin d'un pixel unique
L'exemple suivant illustre des méthodes graphiques permettant de modifier la couleur d'un seul pixel sur un formulaire au moment de l'exécution. L'exemple Visual Basic 6.0 utilise la méthode PSet. L'exemple Visual Basic 2008 utilise la méthode DrawEllipse avec les paramètres Height et Width ayant la valeur 1.
Remarque Dans Visual Basic 6.0, l'unité de mesure par défaut correspond à des twips ; dans Visual Basic 2008, il s'agit de pixels.
' Visual Basic 6.0
Private Sub Form_Paint()
Me.DrawWidth = 1
PSet (1000, 1000), vbRed
End Sub
' Visual Basic
Private Sub Form1_Paint8(ByVal sender As Object, ByVal e As _
System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint
e.Graphics.DrawEllipse(Pens.Red, 70, 70, 1, 1)
End Sub
Définition de la couleur d'un pixel unique
Le code suivant illustre des méthodes graphiques permettant de déterminer la couleur d'un pixel situé à un emplacement particulier dans une image sur un formulaire au moment de l'exécution, et de dessiner ensuite un rectangle plein de cette couleur. L'exemple Visual Basic 6.0 utilise la méthode Point pour récupérer la valeur de couleur. L'exemple Visual Basic 2008 utilise la méthode GetPixel.
Remarque : |
---|
Dans Visual Basic 6.0, l'unité de mesure par défaut correspond à des twips ; dans Visual Basic 2008, il s'agit de pixels. |
' Visual Basic 6.0
Private Sub Form_Paint()
Dim PixelColor As Long
Picture1.Picture = LoadPicture("C:\Windows\Greenstone.bmp")
PixelColor = Picture1.Point(10, 10)
FillColor = PixelColor
Line (0, 0)-(100, 500), PixelColor, B
End Sub
' Visual Basic
Private Sub Form1_Paint9(ByVal sender As Object, ByVal e As _
System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint
Dim Pict1 As New Bitmap("C:\Windows\Greenstone.bmp")
Picture1.Image = Pict1
Dim PixelColor As Color = Pict1.GetPixel(4, 4)
Dim PixelBrush As New SolidBrush(PixelColor)
e.Graphics.FillRectangle(PixelBrush, 0, 0, 100, 100)
End Sub
Équivalences de propriété et de méthode graphiques
Le tableau suivant répertorie les propriétés graphiques et les méthodes de Visual Basic 6.0, ainsi que leurs équivalents Visual Basic 2008.
Visual Basic 6.0 |
Équivalent Visual Basic 2008 |
---|---|
Propriété AutoRedraw |
Nouvelle implémentation. Pour assurer la persistance des graphismes, placez les méthodes graphiques dans l'événement Paint. |
Méthode Circle |
Méthode DrawEllipse |
Propriété ClipControls |
Nouvelle implémentation. La propriété ClipControls n'est plus nécessaire. |
Méthode Cls |
Méthode Clear |
Propriété CurrentX |
Paramètre x de plusieurs méthodes graphiques. Par exemple, DrawRectangle (stylet, x, y, largeur, hauteur) |
Propriété CurrentY |
Paramètre y de plusieurs méthodes graphiques. Par exemple, DrawRectangle (stylet, y, y, largeur, hauteur) |
DrawMode Propriété |
Nouvelle implémentation. La propriété DrawMode n'est plus nécessaire. |
Propriété DrawStyle |
Propriété DashStyle |
Propriété DrawWidth |
Propriété Width |
Propriété FillColor |
Objet SolidBrush |
Propriété FillStyle |
Objet HatchBrush |
Propriété HasDC |
Nouvelle implémentation. Les contextes de périphérique (DC) ne sont plus nécessaires avec GDI+. |
Propriété HDC |
Nouvelle implémentation. Les contextes de périphérique (DC) ne sont plus nécessaires avec GDI+. |
Propriété Image |
Nouvelle implémentation. |
Méthode Line |
Méthode DrawLine |
Méthode PaintPicture |
Méthode DrawImage |
Méthode Point |
Pas d'équivalent direct. Pour les bitmaps, utilisez Bitmap.GetPixel. Pour les formulaires ou les contrôles, utilisez la propriété BackColor. |
Méthode Print |
Méthode DrawString |
Méthode Pset |
Méthodes DrawEllipse, FillEllipse |
Propriétés TextHeight, TextWidth |
Méthode MeasureString |
Mettre à niveau des remarques
Lorsqu'une application est mise à niveau de Visual Basic 6.0 à Visual Basic 2008, les méthodes graphiques ne sont pas mises à niveau et des avertissements sont insérés dans le code. En raison des différences considérables entre GDI et GDI+, tout code graphique existant devra être réécrit.
Voir aussi
Tâches
Contrôle utilisateur de dessin personnalisé, exemple
Autres ressources
Vue d'ensemble des graphismes (Windows Forms)