Site:  Cours VB.net  
3.15 Couleurs, police de caractères .

Couleur et Font.

Les couleurs:

A- Généralités:

Une couleur est représentée par 3 octets correspondent aux composants de couleur rouge, vert et bleu. Chaque octet peut prendre la valeur 0 à 255 (ou 0 à FF en hexadécimal).

Si on utilise la notation hexadécimale, il faut mettre &H avant:  &HFF correspond à 255.

Exemple : valeur des 3 composantes couleurs et couleurs correspondantes:

  rouge   vert   bleu  
0 0 FF  
FF 0 0  
80 0 80  
0 0 0  
FF FF FF  

 

En plus, dans certains cas, il y a une composante alpha qui indique la transparence. 255 indique que la couleur est opaque, 1 à 254 indique que la couleur est transparente.

Il y a une Classe Color dans SystemDrawing. On peut instancier un Objet Color:

Dim myColor As Color

On peut voir ou modifier les composants de cette couleur avec:

myColor.A composante alpha

myColor.B composante bleue

myColor.R composante rouge

myColor.G composante verte

voir aussi  Annexe: Les couleurs 

B- Constantes:

Le plus simple est, pour modifier la couleur d'un objet par du code, d'utiliser les constantes VB qui contiennent le code d'une couleur toute faite (en RGB sans composante Alpha):

Color.Back,

Color.Fuchsia

Color.Chocolate

Color.Red ...

Voici toutes les couleurs à votre disposition:

Elles font partie de  System.Drawing

Comme d'habitude il suffit de taper Color. et la liste très longue des couleurs s'ouvre.

Bouton.BackColor=Color.Red     'modifie la couleur de fond du bouton

                   

 

 

C- Rouge,vert, bleu

Plus puissant:

 Color.FromArgb

Crée une couleur à partir des valeurs des quatre composants ARVB (argb en anglais) 8 bits (alpha, rouge, vert et bleu).

alpha indique la transparence. 255 indique que la couleur est opaque, 1 à 254 indique que la couleur est transparente.

L'octet le plus significatif, représenté par AA, correspond à la valeur du composant alpha. Les second, troisième et quatrième octets, représentés par RR, VV et BB, correspondent aux composants de couleur rouge, vert et bleu, respectivement. Chaque octet prend la valeur 0 à 255 ou 0 à FF en hexadécimal.

Le paramètre correspond à 4 X 8bits=32 bits= un Integer. Pour plus de clarté on rentre généralement les données en hexadécimal:

Me.BackColor= Color.FromArgb(&H780000FF)    'correspond à un bleu transparent.
 

Il y a des surcharges:

On peut passer chaque paramètre séparément:

Me.BackColor=Color.FromArgb(120, 0, 0, 255)
 

On peut aussi  passer l'alpha et la couleur en second paramètre.

 

Plus simple:

On peut définir une couleur avec la fonction RGB  (red, green, blue) , pas de composantes alpha ici.

Dim red As Color = RGB(255, 0, 0) ' fait partie de Microsoft.VisualBasic

 

D- Couleurs 'system'

Ce sont les couleurs utilisées par Windows pour afficher la barre de titre, les fonds, couleurs d'éléments actifs ou non. On peut modifier ces couleurs en passant par le panneau de configuration (option 'Affichage'). Toutes les applications les utilisent. On peut aussi les utiliser.

L'énumération KnownColor contient les couleurs système (couleur des barres, texte, fenêtre active..)

Mais pour utiliser une couleur system, il faut employer SystemColors.

Me.BackColor = SystemColors.ActiveBorder 'modifie la couleur de fond du formulaire en cours

 

E- Couleur dans les objets:

Pour changer la couleur d'arrière-plan du contrôle, utilisez la propriété BackColor, la propriété d'avant plan est Forcolor.

Ici pour ce bouton, BackColor est égal à Color.Red  et ForColor est à Color.Black

Dans le code MyButton.BackColor = Color.Red

En mode Design (conception), on peut modifier la couleur  directement en cliquant sur le bouton '...' en face de BackColor par exemple: la fenêtre de choix des couleurs apparaît:

On a le choix entre les couleurs habituelles dites "Personnalisé" (custom), les couleurs "Web" (couleurs standard web visibles sur tous les environnements) et couleurs "System" (Windows). 

 

E- Choix d'une couleur par l'utilisateur.

Pour permettre à l'utilisateur de choisir une couleur, il faut mettre dans le formulaire une ColorDialog à partir de la boite à outils; elle vient se placer sous le formulaire:

Il faut ensuite, par code, ouvrir cette ColorDialog.

La classe  ColorDialog  a une méthode ShowDialog, analogue à la méthode ShowDialog des classes OpenFileDialog et

SaveFileDialog, qui permet d'afficher la boite de dialogue.

Si l'utilisateur quitte la boîte de dialogue en cliquant sur le bouton 'OK',   la méthode ShowDialog retourne DialogResult.OK et la couleur choisie est dans la propriété Color de l'objet ColorDialog .

Exemple:

L'utilisateur clique sur un bouton nommé 'CouleurButton' cela ouvre la ColorDialog, l'utilisateur clique sur une couleur puis sur 'Ok', cela donne aux caractères de la TextBox 'Texte' la couleur choisie.

Private Sub CouleurButton_Click(ByVal sender As Object, ByVal e As System.EventArgs) _

Handles CouleurButton.Click

' Ouverture de la dialogBox colordialog1

If colorDialog1.ShowDialog() = DialogResult.OK Then

' on met la couleur dans la propriété forecolor du TextBox

Texte.ForeColor = colorDialog1.Color

End If

End Sub

 

 

Police de caractères (ou Font)

 

Une 'Font' est définie par:

    Un nom.

    Une taille

    Un style (gras, italique, souligné..)

 

voir Annexe: Les caractères, codage font 

 

"Mon texte" est en font  'Courier', d'une taille de 12 points et en gras. 

 

Pour modifier la police de caractère utilisée dans un contrôle, il faut lui assigner un objet 'Font'

 

label1.Font = New System.Drawing.Font("Arial", 10)    'on indique le nom de la font et la taille, on aurait pu  ajouter un troisième argument: le style (gras, italique, souligné).
 

label1.Font = New System.Drawing.Font(label1.Font, FontStyle.Bold Or FontStyle.Italic)
Ici c'est une autre signature Font, Style

Visual Basic .NET ne prend plus en charge que les polices TrueType et OpenType (voir explication plus bas).

 

Les propriétés de police sont automatiquement héritées du parent, sauf lorsqu'elles sont explicitement définies pour l'objet enfant. Par exemple, si vous avez deux contrôles d'étiquette dans un formulaire et que vous changiez les propriétés de police du formulaire en Arial, les polices du contrôle d'étiquette sont également changées en Arial. Si par la suite vous changez la police d'une étiquette en Times Roman, les modifications qui pourront être apportées à la police du formulaire ne remplaceront pas la police de l'étiquette.

 

Pour lire les fonts installées utiliser l'espace de noms System.Drawing.FontFamily.
 
Dim ff As FontFamily
For Each ff In System.Drawing.FontFamily.Families
listBox1.Items.Add(ff.Name)
Next
 

Pour que l'utilisateur modifie la police du contrôle List1.
 
Dim myFontDialog As FontDialog
   myFontDialog = New FontDialog()
  
   If myFontDialog.ShowDialog() = DialogResult.OK Then
     
      List1.Font = myFontDialog.Font
   End If

 

 

On ouvre une fenêtre de choix de police (ici en vb 2008), si une police est sélectionnée par l'utilisateur, on l'applique à List1.

Les polices True Type sont précédées d'un TT.

Les polices Open Type sont précédées d'un O.

 

Pour mettre la font de la form en gras:

If Not (Me.Font.Bold) Then
        Me.Font = New Font(Me.Font, FontStyle.Bold)
End If
 

Pour qu'un TextBox utilise la font "Courier New" de taille 12 en italique:

TextBox1.Font = New Font("Courier New", 12, FontStyle.Italic)

 

Attention:

Ne pas utiliser dans votre programme des font 'exotiques' que vous trouvez très belle mais qui ne seront pas présentes sur l'ordinateur des utilisateurs ( elles seront dans ce cas substituées par d'autres avec un résultat aléatoire). Utilisez de l'Arial, il n'y aura pas de problèmes!!

 

Police BitMap, 'True Type', 'Open Type'.

Avant les années 1990 il y avait des polices au format BitMap (image matricielle). Elle ne sont plus utilisées par VB.Net.

Depuis 1980 existe True Type®, un format de police multiplateforme vectorielle, développé  par Apple et vendu ensuite à Microsoft.

(concurrent du format Type1 de PostScript d'Adobe)

On utilise depuis 2001 OpenType® qui est un nouveau format de police multiplateforme vectorielle, développé conjointement par Adobe et Microsoft. Adobe propose plusieurs milliers de polices OpenType.

Les deux principaux atouts du format OpenType résident dans sa compatibilité multiplateforme (un seul et même fichier de polices exploitable sur les postes de travail Macintosh et Windows) et sa prise en charge de jeux de caractères et de fonctions de présentation très étendus, qui offrent de meilleures capacités linguistiques et un contrôle typographique évolué.

Une police Open  Type est basée sur le numéro de caractères Unicode et peut contenir jusqu'à 65000 glyphes.

Le format OpenType est une extension du format TrueType SFNT qui gère également les données des polices Adobe® PostScript® et des fonctions typographiques inédites. 

Les noms de fichier des polices OpenType contenant des données PostScript possèdent l'extension .otf, tandis que les polices OpenType de type TrueType portent l'extension .ttf.

 

Notion de Font proportionnelle.

Il existe des fonts proportionnelles, comme l'Arial, où les différents caractères n'ont pas la même largeur (le i est plus étroit que le P)c'est plus joli.

 Par contre dans les fonts non proportionnelles, comme le 'Courier New', tous les caractères ont même largeur. C'est parfois plus pratique quand on veut afficher des lignes qui concorder sur le plan alignement vertical (et qu'on ne veut pas utiliser les tabulations).

 

En Arial

Philippe Pier:

Philippe Wolf:

 

En Courier new

Philippe Pier:

Philippe Wolf: