Blindation Systems Inc.
Would you like to react to this message? Create an account in a few clicks or log in to continue.
Blindation Systems Inc.

Blindation Systems Inc. is a company which is opened on computing and world culture
 
HomeHome  PortalPortal  GalleryGallery  SearchSearch  Latest imagesLatest images  RegisterRegister  Log in  
Le Deal du moment : -45%
WHIRLPOOL OWFC3C26X – Lave-vaisselle pose libre ...
Voir le deal
339 €

 

 Chapitre 8

Go down 
AuthorMessage
Blind Dragon
Perl encoder
Perl encoder
Blind Dragon


Female
Number of posts : 341
Age : 32
Localisation : Here, as usual
Emploi : Admin.
Registration date : 2007-05-13

Chapitre 8 Empty
PostSubject: Chapitre 8   Chapitre 8 Icon_minitimeTue Jul 10, 2007 5:39 am

Chapitre 8 : Dessins



La barre d'outils Dessin permet d'acceder a toute une panoplie d'outils pour dessiner des formes a l'interieur des feuilles. Toutes ces formes sont bien sur accessibles avec VB.
Vous pourriez, par exemple, reproduire ce dessin avec les outils Fleche, Cercle et Etoile. Ce qui est plus simple a tracer par calcul, l'est beaucoup moins a main levee!


Dessiner avec VB

-Cliquez Nouveau
-Cliquez Visual Basic Editor dans la barre d'outils Visual Basic
Ajoutons notre procedure dans le module attache a la Feuil1.
-Double-cliquez Feuil1 dans la fenetre Projet
-Tapez Sub Rosace() ↵


Objet Shape

La collection d'objets Shapes regroupe tous les types d'objets dessines. Les coordonnees des objets dessines sont exprimees en points par rapport au coin superieur gauche de la cellule A1 de la feuille de calcul. Nous prendrons comme base les coordonnees 100,100.
Les traits suivent une rotation de 0 a 360 degres (2*Pi) et sont traces tous les 30 degres (Pi/6).
-Tapez For i = 0 To 2 * Application.Pi Step Application.Pi / 6 ↵
Il faut maintenant calculer les coordonnees de depart du trait. La longueur par rapport au centre (coordonnees 100,100) sera de 20 points appliques au cosinus et au sinus.
-Tapez xDebut = 100 + Cos(i) * 20 ↵
-Tapez yDebut = 100 + Sin(i) * 20 ↵
Il faut maintenant calculer les coordonnees d'arrivee du trait. La longueur par rapport au centre (coordonnees 100,100) sera de 75 points.
-Tapez xFin = 100 + Cos(i) * 75 ↵
-Tapez yFin = 100 + Sin(i) * 75 ↵


Methode AddLine

La methode AddLine permet d'ajouter une ligne a la collection Shapes en precisant les coordonnees de depart et d'arrivee.
-Tapez Shapes.AddLine xDebut, yDebut, xFin, yFin ↵
Quand on ajoute un objet a une collection, il est place en dernier dans cette collection. La propriete Count donne le nombre d'objets contenu dans une collection. Elle correspond donc au numero de l'objet que l'on vient d'ajouter. Line permet d'acceder a la mise en forme des lignes (couleur, fleche, etc.).
-Tapez With Shapes(Shapes.Count).Line ↵
Modifions l'epaisseur de la ligne.
-Tapez .Weight = xlThin ↵
Placons un oval au debut de la ligne.
-Tapez .BeginArrowheadStyle = msoArrowheadOval ↵
Placons une fleche a la fin de la ligne.
-Tapez .EndArrowheadStyle = msoArrowheadStealth ↵
Fermons l'instruction With et la boucle For.
-Tapez End With ↵ Next i ↵
Back to top Go down
https://blindsysinc.1fr1.net
Blind Dragon
Perl encoder
Perl encoder
Blind Dragon


Female
Number of posts : 341
Age : 32
Localisation : Here, as usual
Emploi : Admin.
Registration date : 2007-05-13

Chapitre 8 Empty
PostSubject: Re: Chapitre 8   Chapitre 8 Icon_minitimeTue Jul 10, 2007 5:39 am

Methode AddShape

Comme il existe une multitude d'objets dessines (rectangles, ovales, etoiles, bannieres, bulles, etc.), c'est la methode generique AddShape qui ajoute ces objets a la collection. Le premier parametre donne le type de dessin, les deux suivants ses coordonnees et les deux derniers sa largeur et sa hauteur.
Ajoutons un cercle au milieu des fleches. Pour VB, un cercle est un ovale dont la largeur et la hauteur sont identiques.
-Tapez Shapes.AddShape msoShapeOval , 90, 90, 20, 20 ↵
Modifions la mise en forme du cercle.
-Tapez With Shapes(Shapes.Count) ↵
Modifions l'epaisseur du cercle.
-Tapez .Line.Weight = xlThick ↵
La propriete ForeColor determine la couleur du trait d'un objet Shape. Cette couleur est definie soit a partir de la palette avec SchemeColor (de 0 a 80), soit en donnant les composantes rouge, vert et bleu avec RGB (16 millions de possibilites). Nous verrons comment retrouver les couleurs de la palette avec une autre procedure.
Modifions la couleur du cercle.
-Tapez .Line.ForeColor.SchemeColor = 4 ↵
La couleur de remplissage s'obtient avec Fill au lieu de Line. Modifions la couleur interieure du cercle.
-Tapez .Fill.ForeColor.SchemeColor = 26 ↵
-Tapez End With ↵
Ajoutons une etoile a huit branches.
-Tapez Shapes.AddShape msoShape8pointStar, 45, 45, 110, 110 ↵
Modifions l'epaisseur du trait, la couleur du trait et la couleur de remplissage.
-Tapez With Shapes(Shapes.Count) ↵
-Tapez .Line.Weight = xlThick ↵
-Tapez .Line.ForeColor.SchemeColor = 2 ↵
-Tapez .Fill.ForeColor.SchemeColor = 26 ↵
Les objets sont places les uns au-dessus des autres. L'etoile etant le dernier objet cree, elle se trouve au premier plan. Placons-la en arriere-plan.
-ZOrder (propriete) : position d'un objet dans une superposition.
-Tapez .ZOrder msoSendToBack ↵
Avant de rendre la main a l'utilisateur, faisons tourner l'etoile sur elle-meme avec une boucle.
-Tapez For i = 0 To 180 ↵
-IncrementRotation (methode) : effectue une rotation d'un objet Shape du nombre de degres specifies
En specifiant une rotation de 1 degre, l'etoile tournera de 180 fois 1 degre. Mais en specifiant le compteur i de la boucle comme rotation, l'etoile tournera de 1 degre, puis de 2 degres, puis de 3 degres, etc., ce qui donnera une impression d'acceleration puis de deceleration.
-Tapez .IncrementRotation i ↵
L'affichage n'est pas mis a jour pendant l'execution d'une macro si un nouvel objet n'est pas selectionne. Selectionnons systematiquement la cellule A1 pour voir l'etoile tourner.
-Tapez Range("A1").Select ↵
Fermons la boucle For et l'instruction With.
-Tapez Next i ↵ End With ↵
-Cliquez Affichage Microsoft Excel dans la barre d'outils Standard
-Cliquez le menu Outils Macro Macros
-Double-cliquez Feuil1.Rosace dans la liste Nom de la macro
-Cliquez Enregistrer puis tapez Dessins ↵ dans Nom du fichier


Palette des couleurs

Cette nouvelle procedure nous fournira la liste des couleurs a utiliser avec la propriete SchemeColor. Les couleurs apparaitront sous forme de ligne dans les cellules de la feuille de calcul.
-Cliquez Visual Basic Editor dans la barre d'outils Visual Basic
-Tapez Ctrl Fin pour passer a la fin du module Feuil1 (Code)
-Tapez Sub Couleurs ↵
Chaque ligne sera placee dans une cellule de la colonne A. Ainsi, la couleur dans la cellule A1 nous fournira la couleur 1 de la propriete SchemeColor.
Pour etre de la position des lignes de couleur, assurons-nous que les lignes de la feuille de calcul sont a la hauteur standard (12,75 points).
-Tapez Columns("A").Select ↵
-Tapez Selection.RowHeight = 12.75 ↵
La palette contient 80 couleurs differentes.
-Tapez For i = 1 To 80 ↵
Ajoutons une ligne avec la methode Addline de la collection Shapes. On retranche 6 points a la position verticale pour que la ligne soit au milieu de la cellule.
-Tapez Shapes.AddLine 0, (1 * 12.75) - 6, 20, (i * 12.75) - 6 ↵
Modifions l'epaisseur et la couleur de la ligne.
-Tapez With Shapes(Shapes.Count).Line ↵
-Tapez .Weight = xlThick ↵
-Tapez .ForeColor.SchemeColor = i ↵
-Tapez End With ↵
Fermons la boucle For.
-Tapez Next i ↵
Deselectionnons la colonne A.
-Tapez Range("A1").Select ↵
-Cliquez Affichage Microsoft Excel dans la barre d'outils Standard
Executons la procedure.
-Cliquez le menu Outils Macro Macros
-Double-cliquez Feuil1.Couleurs dans la liste Nom de la macro
[La cellule A1 ets vide car le trait est blanc. La valuer 0 qui n'est pas representee correspond a la couleur noire.]
-Cliquez Enregistrer pour sauver le classeur
Back to top Go down
https://blindsysinc.1fr1.net
Blind Dragon
Perl encoder
Perl encoder
Blind Dragon


Female
Number of posts : 341
Age : 32
Localisation : Here, as usual
Emploi : Admin.
Registration date : 2007-05-13

Chapitre 8 Empty
PostSubject: Re: Chapitre 8   Chapitre 8 Icon_minitimeTue Jul 10, 2007 5:40 am

Objet FreeFormBuilder

Les objets FreeFormBuilder sont des ensembles de lignes et de courbes. Une fois traces, on les convertit en objets Shape.
Nous allons creer un village avec 24 maisons.
-Cliquez Visual Basic Editor dans la barre d'outils Visual Basic
-Tapez Ctrl Fin pour passer a la fin du module Feuil1 (Code1)
-Tapez Sub Village ↵
-Tapez For i = 1 To 24 ↵


Nombres aleatoires

Chaque maison sera composee d'une forme libre dont la position sera aleatoire, et d'un carre pour la porte dont la couleur sera aussi aleatoire.
La fonction Rnd retourne un nombre aleatoire superieur ou egal a 0 et inferieur a 1. En multipliant cette fonction par 10, on obtient donc un nombre compris entre 0 et 9,99999...
Il faut en premier lieu determiner le point de depart de la forme de la maison. Sa position variera entre 190 et 439 points a l'horizontale.
-Tapez xBase = 190 + Rnd * 250 ↵
Sa position a la verticale restera fixe a 120 pour que toutes les maisons soient au meme niveau.
-Tapez yBase = 120 ↵
Determinons sa largeur et sa hauteur.
-Tapez Largeur = 50 + Rnd * 30 ↵
-Tapez Hauteur = 20 + Rnd * 40 ↵
Les couleurs des portes seront aleatoires. Definissons les trois couleurs de base avec la fonction Rnd.
Ces couleurs seront utilisees par la fonction RGB.
-Tapez Rouge = Rnd() * 256 ↵
-Tapez Vert = Rnd() * 256 ↵
-Tapez Bleu = Rnd() * 256 ↵
Pour creer une forme libre, il faut determiner le point de depart, puis ajouter les points qui determinent la forme. Nous suivrons le dessin ci-apres pour determiner la position des cinq segments qui composent la maison.
Back to top Go down
https://blindsysinc.1fr1.net
Blind Dragon
Perl encoder
Perl encoder
Blind Dragon


Female
Number of posts : 341
Age : 32
Localisation : Here, as usual
Emploi : Admin.
Registration date : 2007-05-13

Chapitre 8 Empty
PostSubject: Re: Chapitre 8   Chapitre 8 Icon_minitimeTue Jul 10, 2007 5:41 am

Definissons le point de depart de la forme avec la methode BuildFreeform de la collection Shapes. Cette methode genere un objet FreeFormBuilder.
-Tapez With Shapes.BuildFreeform(msoEditingCorner, xBase, yBase) ↵
La methode AddNodes ajoute un nouveau point a l'objet FreeFormBuilder.
Ajoutons le segment 1 (voir dessin).
-Tapez .AddNodes msoSegmentLine, msoEditingAuto, xBase + (Largeur / 2), yBase - (Hauteur * 1.5) ↵
Ajoutons les trois autres segments pour fermer la forme.
-Tapez .AddNodes msoSegmentLine, msoEditingAuto, xBase + Largeur, yBase - Hauteur ↵
-Tapez .AddNodes msoSegmentLine, msoEditingAuto, xBase + Largeur, yBase ↵
-Tapez .AddNodes msoSegmentLine, msoEditingAuto, xBase, yBase ↵
Nous pouvons maintenant convertir notre forme libre en objet Shape avec la methode ConvertToShape.
-Tapez .ConvertToShape ↵
-Tapez End With ↵
Modifions la position et la couleur de la maison.
-Tapez With Shapes(Shapes.Count) ↵
Pour plus de realisme, placons les grandes maisons en arriere-plan
-Tapez If Hauteur > 40 Then ↵
-Tapez ZOrder msoSendToBack ↵
-Tapez End if ↵
Remplissons la forme avec des textures predefinies (methode PresetTextured). Choisissons la texture en fonction d'un nombre aleatoire.
-Tapez If Rnd > 0.5 Then ↵
-Tapez .Fill.PresetTextured msoTextureParchment ↵
-Tapez Else ↵
-Tapez .Fill.PresetTextured msoTextureRecycledPaper ↵
-Tapez End if ↵ End With ↵
Les rectangles s'ajoutent avec la methode AddShape comme les cercles ou les formes predefinies. Ajoutons des carres pour les portes.
-Tapez Shapes.AddShape msoShapeRectangle, xBase + (Largeur / 2) - 5, yBase - 10, 10, 10 ↵
Comme pour les maisons, il faut placer en arriere-plan les portes quand la hauteur depasse 40 points.
-Tapez With Shapes(Shapes.Count) ↵
-Tapez If Hauteur > 40 Then ↵
-Tapez .ZOrder msoSendToBack ↵
-Tapez End if ↵
La fonciton RGB retourne le numero d'une couleur en fonction des trois couleurs de base (rouge, vert et bleu). On utilise ici la propriete RGB a la place de SchemeColor. Modifions la couleur de la porte.
-Tapez .Fill.ForeColor.RGB = RGB(Rouge, Vert, Bleu) ↵
Fermons l'instruction With et la boucle For.
-Tapez End With ↵ Next i ↵
-Cliquez Affichage Microsoft Excel dans la barre d'outils Standard
Executons la procedure.
-Cliquez le menu Outils Macro Macros
-Double-cliquez Feuil1.Village dans la liste Nom de la macro


Supprimer les dessins

Pour supprimer les objets dessines de la feuille de calcul, il faut les selectionner en cliquant dessus quand la souris a la forme Aide a la selection, puis appuyer sur Suppr. Pour supprimer plusieurs objets, il faut les encadrer avec l'outil Selectionner des objets de la barre d'outils Dessin puis appuyer sur Suppr.
Comme tous les objets sont disperses sur la feuille, une procedure semble plus adequate pour les supprimer en une seule operation.
-Cliquez Visual Basic Editor dans la barre d'outils Visual Basic.
-Tapez Ctrl Fin pour passer a la fin du module Feuil1 (Code)
-Tapez Sub SupprimerObjetsShapes ↵
Comme il n'existe pas de methode Delete pour la collection Shapes, il faut selectionner tous les objets Shape puis supprimer la selection.
Selectionnons tous les objets de la collection Shapes.
-Tapez Shapes.SelectAll ↵
Supprimons les objets Shape selectionnes.
-Tapez Selection.Delete ↵
[Si vous devez la reutiliser, sachez que cette procedure supprime tous les objets Shape, y compris les boutons de commande, les zones de texte, les graphiques, etc.]
-Cliquez x pour fermer la fenetre Microsoft Visual Basic
-Cliquez le menu Outils Macro Macros
-Double-cliquez Feuil1.SupprimerObjetsShapes dans la liste Nom de la macro
Tous les objets sont supprimes.
-Executez les procedures Feuil1.Rosace, Feuil1.Couleurs, et Feuil1.Village
-Cliquez Enregistrer pour sauver le classeur
-Cliquez x pour fermer le classeur Dessins.
Back to top Go down
https://blindsysinc.1fr1.net
Sponsored content





Chapitre 8 Empty
PostSubject: Re: Chapitre 8   Chapitre 8 Icon_minitime

Back to top Go down
 
Chapitre 8
Back to top 
Page 1 of 1
 Similar topics
-
» Chapitre 7
» Chapitre 9
» Chapitre 1
» Chapitre 2
» Chapitre 3

Permissions in this forum:You cannot reply to topics in this forum
Blindation Systems Inc. :: Francophones :: Classe de Visual Basic-
Jump to: