begin process at 2012 02 16 01:30:39
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Visual Basic 6

 > 

Divers

 > 

Débutants

 > 

Dessiner un triangle isocèle dans une picturebox


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Dessiner un triangle isocèle dans une picturebox

jeudi 14 décembre 2006 à 23:31:48 | Dessiner un triangle isocèle dans une picturebox

jytest

Je n'arrive pas à dessiner un triangle dans une picturebox (pictriangle).

Voici une partie de code :

pictriangle.Cls
pictriangle.CurrentX = 0
pictriangle.CurrentY = 0
pictriangle.Line -Step(160, 230), vbred
pictriangle.Line -Step(-320, 0), vbRed
pictriangle.Line -Step(160, -230), vbRed

Qui peut m'aider ???
Grand merci d'avance.

jyd
vendredi 15 décembre 2006 à 08:15:55 | Re : Dessiner un triangle isocèle dans une picturebox

jmfmarques

Membre Club
Réponse acceptée !
J'ai décomposé pour que tu puisses mieux voir :

Private Sub Command1_Click()
  pictriangle.AutoRedraw = True
  pictriangle.DrawWidth = 5
  Dim Ax As Single, Ay As Single, Bx As Single, By As Single, Cx As Single, CY As Single
  Ax = 0
  Ax = pictriangle.ScaleWidth / 2
  Ay = 0
  Bx = 0
  By = pictriangle.ScaleHeight
  Cx = pictriangle.ScaleWidth
  CY = pictriangle.ScaleHeight
  pictriangle.Line (Ax, Ay)-(Bx, By), vbRed
  pictriangle.Line (Bx, By)-(Cx, CY), vbRed
  pictriangle.Line (Cx, CY)-(Ax, Ay), vbRed
End Sub
vendredi 15 décembre 2006 à 09:17:53 | Re : Dessiner un triangle isocèle dans une picturebox

ScSami

Membre Club
Réponse acceptée !
Arf, ton problème est tout simple mon cher...

Déjà, là, prends conscience que tu dessine à la manière du language LOGO made under TO7, c'est à dire, à la manière des années 80 [mdr], ou, pour être plus précis, de manière relative. Sais-tu que tu peux aussi tracer des lignes de manière absolue ??? J'imagine que oui, mais juste au cas où, voici la syntaxe à utiliser :
objet.LINE (point1_X, point1_Y)-(point2_X, point2_Y), color [, [B][F]]
OBJET étant un contrôle possédant la méthode Line tel que les Form, les PictureBox, ...
Les options B, BF tracent respectivement un carré ou un carré rempli de la couleur.
Pi il vaut mieux utiliser une "structure de donnée" pour stocker les coordonnées des points.

Exemple :
[Private/Public] Type typPoint
 X As Long
 Y As Long
End Type

[Private/Public/Dim] Point1 As typPoint
[Private/Public/Dim] Point2 As typPoint

Point1.X = 0
Point1.Y = 0
Point2.X = 100
Point2.Y = 100

[objet].Line (Point1.X, Point1.Y)-(Point2.X, Point2.Y), [vbRed/RGB(255,0,0)], [B/BF]

bref


TON PROBLÈME :

'Tu part du point 0,0
pictriangle.CurrentX = 0
pictriangle.CurrentY = 0
'Tu traces une ligne de 0,0 à 160,230
pictriangle.Line -Step(160, 230), vbred
'Tu traces une ligne de 160,230 à -320,0
pictriangle.Line -Step(-320, 0), vbRed
pictriangle.Line -Step(160, -230), vbRed


DEUX CHOSES À SAVOIR :


- L'UNITÉ (de mesure) par défaut des contrôles VB sur lesquels tu peux dessiner (FORM, PICTUREBOX, ...) est en TWIPS et non en PIXELS !!! C'est une unité relative standard made by Crosoft pour garantir un affichage identique sous tous les types de supports (écrans, imprimante, ...). Généralement, 1 Pixel = 15 Twips (et inversement). Mais en réalité, le nombre de Twips par Pixels dépend des valeurs des propriétés "TwipsPerPixelX"
et "TwipsPerPixelY" retournées par l'objet "Screen" (pour ton écran donc) :  Screen.TwipsPerPixelX    Screen.TwipsPerPixelY. Le plus simple, au lieu de tout convertir à chaque fois, est de paramétrer la propriété "ScaleMode" de ton objet. Scale = échelle, donc, c'est le mode de l'échelle utilisée (ce qui sous entend que l'échelle peut être personnalisée. Pour résoudre ton premier problème il faut soit régler cette propriété manuellement dans l'IDE (l'interface graphique) du VB, soit via cette ligne de code (avant les autres, dans l'initialisation de ton module, autrement dit, dans Form_Load de préférence) :
pictriangle.ScaleMode = vbPixels
(Note que vbPixels est une constante VB de valeur 3 )

- LE POINT 0,0. En effet, là tu dessines hors de l'écran !!! Le point 0,0 se trouve en haut à gauche de ta PictureBox et non, tel on en a l'habitude en maths, au centre de l'écran !!! Donc, avec tes valeurs négatives, tu dessines hors de la zone affichable. Il faut, tel le sous-entends JFMmarques, utiliser les Propriétés ScaleWidth et ScaleHeight de ton objet. Elles retourne la largeur et la hauteur de la zone dessinable DANS l'unité spécifiée via ScaleMode, le pixel en l'occurence !!!

'Définition de l'unité de l'échelle employée :
pictriangle.ScaleMode = vbPixels
'Centre horizontal de la zone de dessin :
Cx = pictriangle.ScaleWidth / 2
'Centre vertical de la zone de dessin :
Cy = pictriangle.ScaleHeight / 2

Enjoy

( Si une réponse vous convient, cliquez sur le bouton "Réponse acceptée". )
vendredi 15 décembre 2006 à 10:04:51 | Re : Dessiner un triangle isocèle dans une picturebox

jytest

Merci pour votre précieuse aide !!!
Génial

jyd
vendredi 15 décembre 2006 à 11:28:41 | Re : Dessiner un triangle isocèle dans une picturebox

jmfmarques

Membre Club

Bon...
Ceci étant dit :  tu as eu là de quoi dessiner le plus grand triangle isocèle inscriptible dans ta pictureBox

Tu a la liberté totale de dessiner d'autres triangles isocèles, mais alors :

"triangle isocèle" tout court ne signifie pas grand chose !

La manière la plus simple d'en définir un est de définir sa base BC (coordonnées des 2 extrémités de la base) et sa hauteur H (car il est évident que pour une même base, tu peux dessiner plusieurs triangles isocèles.

Un calcul arithmétique élémentaire te permet alors de déterminer les coordonnées du sommet A (abscisse = (abscisse de C - abscisse de B)/2 et ordonnée = ordonnée de B - H )

Ceci pour un triangle dont la base est parallèle à celle de ta pictureBox.

Pour un triangle "incliné", c'est un peu plus compliqué mais quelques notions de trigonométrie suffisent.

 

Amuse-toi bien.

vendredi 15 décembre 2006 à 16:24:54 | Re : Dessiner un triangle isocèle dans une picturebox

ScSami

Membre Club
Eh puis note également qu'il y a une API qui te les déssineront (les triangles quelconques) et peuvent même te les remplir... et même, te les remplir avec un dégradé !!!

[ Lien ] est ton ami   (cf. Poly)

Enjoy

( Si une réponse vous convient, cliquez sur le bouton "Réponse acceptée". )
dimanche 15 août 2010 à 16:52:45 | triangles quelconques et autres

mortmen

Salut ScSami,

Pourrait-on en savoir un peu plus sur ces API qui pourraient nous dessiner des triangles quelconques et qui peuvent même nous les remplir ?
ça m'intéresse !
Merci et bonne prog !!!


Cette discussion est classée dans : step, picturebox, dessiner, line, triangle


Répondre à ce message

Sujets en rapport avec ce message

Après "Comment saver une picturebox", "Commend Dessiner dans une PictureBox!" [ par WebMagique ] Voilà, comment dessiner dans une pictureBox (comme Paint)Pour tout vous dire, je cherche à créer un créateur d'icônes & curseurs...Merci! Je voudrais imprimer des line et des circle [ par cassiopee ] Dans mon prog je creer des line et des circle dans un picturebox. Je voudrais les imprimer mais si j'imprime avecPicture1.paintpicture ...ca ne m'impr Je voudrais imprimer des line et des circle [ par cassiopee ] Dans mon prog je creer des line et des circle dans un picturebox. Je voudrais les imprimer mais si j'imprime avecPicture1.paintpicture ...ca ne m'impr Ajouter une methode a pictureBox [ par bachir ] Bonjour a tousJe voudrais ajouter une methode a un controle PICTUREBOX.Je voudrais savoir comment faire, creation d'une classe et implementation d'un [PictureBox] Pset et line + statistique [ par panthere ] Bonjours.Le but:Faire des statistiques pour une base de donnée.j'ai un pictureboxdedans je dessine une grille a l'aide de la methode line.<img src=/im image et picturebox [ par JcDuss ] J'ai une pictureBox, a l'interieur de celle ci, j'ai une image plus grande que je fais scroller avec la souris.Si je dessine dans la picture box, cela Dessiner un rectangle en code dans un PictureBox [ par jeiragne ] Bonjour,voila je commence sur .NET et je galere.j'aimerai pouvoir dessiner des rectangles, des lignes et du textes à différentes coordonnées.je faisai picturebox.line en vb net [ par syspo ] J'utilise couramment la méthode Line pour des objets PictureBox en VB6. Je n'arrive pas à le faire en VB net.Quelqu'un aurait 'il un exemple de dessin Comment deplacer une Line dans un picturebox [ par pirate75000 ] Dans un picturebox jai plusieur Line, comment pourrais selectionner par un click cette Line pour la deplacer,merci Dessiner un triangle et le remplir [ par jeje2 ] salutje dessine un triangle avec 3 lignes mais comment faire pour remplir l'intérieur avec une couleur ?merci d'avance


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 2,636 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales