Dessin

Résolu
nuttyfbr Messages postés 57 Date d'inscription mardi 31 août 2004 Statut Membre Dernière intervention 8 octobre 2006 - 2 juin 2005 à 17:36
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 - 14 juin 2005 à 14:23
Voila, c'est un peu hard à comprendre comme question, masi j'aimerais
savoir comment dessiner une ligne. Mais pas une bête ligne.



J'entre une taille et un angle, il me la met dans une zone et je peux la déplacer pour la mettre ou je veux.



J'ai charché, j'ai pas trouvé, merci d'avance.
NuttyKizzy

31 réponses

Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
4 juin 2005 à 12:11
faut changer ForeColor, soit avec les constantes vb, soit avec une autre méthode.

Picture1.ForeColor = vbBlue

Picture1.ForeColor = QBColor(10)

Picture1.ForeColor = RGB(255, 200, 0)

Picture1.ForeColor = &HFF0000




Daniel
3
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
2 juin 2005 à 18:45
tu pourrais utiliser le contrôle Ligne.

pas d'effacement à faire.

déplacement dans l'évênement _MouseMove.





Line.X2 = Line.X1 + taille * Cos(angle)

Line.Y2 = Line.Y1 - taille * Sin(angle)

Daniel
0
nuttyfbr Messages postés 57 Date d'inscription mardi 31 août 2004 Statut Membre Dernière intervention 8 octobre 2006
2 juin 2005 à 18:54
Et je pourrais le mettre dans une picture box par hazar ?

NuttyKizzy
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
2 juin 2005 à 18:59
Forme, Frame, PictureBox, SStab, etc ...

tout ce qui est container

Daniel
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
nuttyfbr Messages postés 57 Date d'inscription mardi 31 août 2004 Statut Membre Dernière intervention 8 octobre 2006
2 juin 2005 à 19:02
2 autres questions, comment on choisis une cible, et comment on fait pour lancer l'impression du résultat ?

NuttyKizzy
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
2 juin 2005 à 19:25
pas bien compris la question.

qui va choisir la cible ?

ben l'utilisateur bien sûr, ensuite il va donner un angle, une taille ? moi je dirais plutot une puissance de tir

et la trajectoire ce sera pas une Ligne mais une parabole.



et pour imprimer la PictureBox, il faut utiliser Printer.

Printer.PaintPicture Picture1.Image

Printer1.EndDoc




Daniel
0
nuttyfbr Messages postés 57 Date d'inscription mardi 31 août 2004 Statut Membre Dernière intervention 8 octobre 2006
2 juin 2005 à 19:26
Non, je demande ce que je doit faire pour qu'il mette ma ligne DANS la picturebox ...

NuttyKizzy
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
2 juin 2005 à 19:31
c'est toi qui la met la Ligne dans la PictureBox, à la création, comme un contrôle normal.

si tu veux pas la faire apparaître au départ tu la met invisible.


Daniel
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
2 juin 2005 à 19:35
je parlais de l'Objet Line que tu trouves dans la boîte à outils.

mais si tu veux la dessiner, c'est autrement.

je précise VB6.

tout en pixels et angle en degré transformé en radians



Dim angle As Double

Dim taille As Double

Dim x1 As Double ' ou Long à partir d'ici

Dim y1 As Double

Dim x2 As Double

Dim y2 As Double



angle = (60 * Pi) / 180

taille = 100



x1 = 20

y1 = 120



x2 = x1 + taille * Sin(angle)

y2 = y1 - taille * Cos(angle)

Picture1.Line (x1, y1)-(x2, y2), vbRed


Daniel
0
nuttyfbr Messages postés 57 Date d'inscription mardi 31 août 2004 Statut Membre Dernière intervention 8 octobre 2006
2 juin 2005 à 19:35
Bon en gros, j'ai un bouton, deux textbox (angle et taille) et une picture box.

Je vuex que quand je clique sur le bouton, il me mette une ligne avec
la puissance de tir choisie et une taille choisie. Je doit mettre quel
code sur quel objet ?



Je suis un peu nul ^^"

NuttyKizzy
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
2 juin 2005 à 19:44
j'avais fait une truc comme ça, pour une trajectoire balistique.

gavité G, angle Alpha, vitesse de départ V0 (dépend de la puissance),
point de départ en bas à gauche pour une hauteur de 200 pixels.









Option Explicit




Dim v0 As Integer


Dim alpha As Integer


Dim Pi As Double




Private Sub Command1_Click()


Dim angle As Double


Dim Vx As Double


Dim Vy As Double


Dim T As Double


Dim G As Double


Dim i As Integer


Dim x As Integer


Dim y As Integer





Pi = 3.141159


G = 9.81


v0 = 50


alpha = 45





angle = (alpha * Pi) / 180


Vy = Sin(angle)


Vx = Cos(angle)


For x = 0 To 239


T = x / Vx / 40


y = 200 + (G * T * T / 2 - v0 * T)


Picture1.PSet (x, y), vbBlack


Next





End Sub






Daniel
0
nuttyfbr Messages postés 57 Date d'inscription mardi 31 août 2004 Statut Membre Dernière intervention 8 octobre 2006
2 juin 2005 à 20:02
J'ai réussis à faire un code qui va bien pour moi. Mais comment je fait
pour que le "60" de angle = (60 * Pi) / 180 soit le texte d'une TextBox
? Faut-il que je change quelque chose dans la configuration de la
TextBox ?

NuttyKizzy
0
nuttyfbr Messages postés 57 Date d'inscription mardi 31 août 2004 Statut Membre Dernière intervention 8 octobre 2006
2 juin 2005 à 20:23
J'ai trouvé ! J'ai un bug avec printer et pour faire bouger comment on fait ?

NuttyKizzy
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
2 juin 2005 à 20:37
Un Timer, une PictureBox, un Bouton pour lancer le tir, une shape comme projectile.

pour l'angle tu le prend dans le textBox, tu peux assimiler aussi la puissance à la vitesse de départ dans un autre textBox.

alpha = Text1.Text

V0 = Text2.Text.



Option Explicit



Const G As Double = 9.81

Const Pi As Double = 3.1415926536



Dim v0 As Integer

Dim alpha As Integer

Dim angle As Double

Dim Vx As Double

Dim Vy As Double

Dim T As Double

Dim i As Integer

Dim x As Integer

Dim y As Integer




Private Sub Form_Load()

Picture1.Width = 500

Picture1.Height = 200

Shape1.Shape = 3

Shape1.Width = 20

Shape1.Height = 20

Timer1.Interval = 200

Timer1.Enabled = False

End Sub




Private Sub Command1_Click()



v0 = 60

alpha = 45



angle = (alpha * Pi) / 180

Vy = Sin(angle)

Vx = Cos(angle)



x = 0

y = Picture1.ScaleHeight - Shape1.Height

Shape1.Move x, y

T = 0

Timer1.Enabled = True



End Sub



Private Sub Timer1_Timer()

T = T + 1

x = T * 40

y = 200 + (G * T * T / 2 - v0 * T)

Shape1.Move x, y

If y > Picture1.ScaleHeight Or x > Picture1.ScaleWidth Then

Timer1.Enabled = False

Beep

End If

End Sub


Daniel
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
2 juin 2005 à 20:51
j'ai modifier pour mettre la position de départ du tir à xo,y0.

Printer ça un rapport avec l'imprimante pas avec la PictureBox.

pour écrire un texte c'est Picture.Print, pour une Ligne c'est
Picture.Line, pour un cercle c'est picture.Circle, pour un point c'est
Picture.Pset, etc ...

ici c'est seulement une shape qui se déplace.



Option Explicit



Const G As Double = 9.81

Const Pi As Double = 3.1415926536



Dim v0 As Integer

Dim alpha As Integer

Dim angle As Double

Dim Vx As Double

Dim Vy As Double

Dim T As Double

Dim x0 As Integer

Dim y0 As Integer

Dim x As Integer

Dim y As Integer



Private Sub Form_Load()

Picture1.Width = 500

Picture1.Height = 200

Shape1.Shape = 3

Shape1.Width = 20

Shape1.Height = 20

Timer1.Interval = 200

Timer1.Enabled = False

x0 = 0

y0 = Picture1.ScaleHeight - Shape1.Height

End Sub



Private Sub Command1_Click()

v0 = 59

alpha = 45

angle = (alpha * Pi) / 180

Vy = Sin(angle)

Vx = Cos(angle)

x = x0

y = y0

T = 0

Timer1.Enabled = True

End Sub



Private Sub Timer1_Timer()

Shape1.Move x, y

If y > Picture1.ScaleHeight Or x > Picture1.ScaleWidth Then

Timer1.Enabled = False

Beep

End If

T = T + 1

x = x0 + T * 40

y = y0 + (G * T * T / 2 - v0 * T)

End Sub


Daniel
0
nuttyfbr Messages postés 57 Date d'inscription mardi 31 août 2004 Statut Membre Dernière intervention 8 octobre 2006
3 juin 2005 à 14:38
Et comment je fait pour qu'il dessine un carcle à partir d'un rayon ?

NuttyKizzy
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
3 juin 2005 à 21:05
c'est à partir d'un point x,y et d'un Rayon

Picture1.Circle (x, y), Rayon, vbRed







sinon il manquait la prise en compte des vitesses:



Vy = Sin(angle) * v0

Vx = Cos(angle) * v0

' avec G optimisé pour atteindre le haut

' pour une force optimale de 100 c'est 100*100 --> 10000

' G = 10000 / (Picture1.ScaleWidth - Shape1.Width)



' éventuellement un coefficient pour atteindre le côté droit

' pour une force optimale de 100 c'est 100*100/2 --> 5000

' k = Sqr((y0 * G * 2) / 5000)



Vy = Vy * k

Vx = Vx / k


' et dans le Timer

' x0 et y0 c'est la position de départ)

T T + 1 '(ou ce qu'on veut par exemple t T + 0.2)

x = x0 + T * Vx

y = y0 + (G * T * T / 2 - Vy * T)


Daniel
0
nuttyfbr Messages postés 57 Date d'inscription mardi 31 août 2004 Statut Membre Dernière intervention 8 octobre 2006
4 juin 2005 à 09:42
Deux dernier petit trucs et normalement après, j'ai fini.



1: Je "Print" du texte dans ma picture1 qu'est ce que je doit rajouter à :



Picture1.CurrentX = goch

Picture1.CurrentY = ho - 400

Picture1.Print taill.Text


pour l'avoir en rouge ?



2: ... Je ne me rapelle plus ... Une question à la foi, c'est bien bon ... ^^
NuttyKizzy
0
nuttyfbr Messages postés 57 Date d'inscription mardi 31 août 2004 Statut Membre Dernière intervention 8 octobre 2006
4 juin 2005 à 13:07
J'ai retrouvé ma dernière question. Je voulais faire une sauvgarde
automatique. J'ai pour la sauvgarde, mais pour ouvrir mon ficher *.pln
(l'extenssion n'a pas d'importance, je peux la changer dans le timer.)
Comment on fait ?

NuttyKizzy
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
4 juin 2005 à 18:46
tu veux sauvegarder quoi ?









Open "C:\MonDossier\MonFichier.pln" For Output As #1

Print#1,"ce que tu veux"

Print#1,"Position Ligne:"; Line.X1;Line.X2;Line.Y1;Line.Y2

Print#1,"j'ai mis n'importe quoi"

print#1,"c'était des exemples"

Close#1

Daniel
0
Rejoignez-nous