|
Site |
Cours VB.net |
|
|
|
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:
|
|
|
|
|