Voici une petite photo qui "démontre" qu'en informatique, à cause des
pixels, une ligne n'est droite que dans trois cas, car on ne peut appliquer
des formules mathématiques (géométriques) sans tenir compte des contrainte
informatiques, surtout quand la théorie géométrique s'avère contraire à la
contrainte informatique.
En effet, sur une feuille, ou ailleurs, en théorie géométrique, si on trace
un segment de droite entre deux point ça donnera une ligne "droite", mais
cette théorie ne peux pas s'appliquer en informatique, sauf dans trois cas.
or quand on est dans un forum de programmation, on ne développe pas des
pseudo-formule mathématique qui déjà sont inutiles du fait qu'il existe des
fonctionnalités prédéfinies pour résoudre le problème, et qu'en plus elles
sont en quasi-totalité contraires aux contraintes informatiques !
Par exemple, si on demande comment faire une boucle, on ne produit pas les
théorie mathématiques sur l'addition et la soustraction, ni le code
assembleur in fine ayant servi à faire la boucle, mais seulement les
directives informatiques permettant de le faire (for, to, next), alors pour
la ligne en pixels ça ne fait pas exception, les pseudo savoirs
anglo-mathématiques ne relèvent pas de la programmation dans un forum en
langue française, sauf s'il n'y avait pas le choix, mais ici il y a
grandement le choix !
Bon pour faire avancer le schimili, repasser par les points d'une droite, c'est pas aussi évident que ça
Dessinez avec Line (de bas en haut) sur la form et le programme essayer de repasser par les points de la droite. Et bien ça foire. Qui a mieux ?
' Déclare les variables. Dim CX, CY, z, Msg, XPos, YPos Dim ind, y, x, w As Integer ScaleMode = 3 ' Définit pixel comme unité de ' mesure. DrawWidth = 1 ' Définit la propriété DrawWidth.
x = Line1.X1 - 1 y = Line1.Y1 - 1 z = Line1.X2 - Line1.X1
w = Line1.Y2 - Line1.Y1
ind = z / w
For y = Line1.Y1 To Line1.Y2
x = x + ind
XPos = x
YPos = y
PSet (XPos, YPos), QBColor(7) DoEvents
Next
Bon pour faire avancer le schimili, repasser par les points d'une
droite, c'est pas aussi évident que ça
Dessinez avec Line (de bas en haut) sur la form et le programme essayer
de repasser par les points de la droite. Et bien ça foire. Qui a mieux
?
' Déclare les variables.
Dim CX, CY, z, Msg, XPos, YPos
Dim ind, y, x, w As Integer
ScaleMode = 3 ' Définit pixel comme unité de
' mesure.
DrawWidth = 1 ' Définit la propriété DrawWidth.
x = Line1.X1 - 1
y = Line1.Y1 - 1
z = Line1.X2 - Line1.X1
Bon pour faire avancer le schimili, repasser par les points d'une droite, c'est pas aussi évident que ça
Dessinez avec Line (de bas en haut) sur la form et le programme essayer de repasser par les points de la droite. Et bien ça foire. Qui a mieux ?
' Déclare les variables. Dim CX, CY, z, Msg, XPos, YPos Dim ind, y, x, w As Integer ScaleMode = 3 ' Définit pixel comme unité de ' mesure. DrawWidth = 1 ' Définit la propriété DrawWidth.
x = Line1.X1 - 1 y = Line1.Y1 - 1 z = Line1.X2 - Line1.X1
w = Line1.Y2 - Line1.Y1
ind = z / w
For y = Line1.Y1 To Line1.Y2
x = x + ind
XPos = x
YPos = y
PSet (XPos, YPos), QBColor(7) DoEvents
Next
Jean-Marc
On 9 jan, 18:08, at wrote:
Bon pour faire avancer le schimili, repasser par les points d'une droite, c'est pas aussi évident que ça
Dessinez avec Line (de bas en haut) sur la form et le programme essayer de repasser par les points de la droite. Et bien ça foire. Qui a mieux ?
Pas moi, mais Bresenham, lui dit mieux... Il dit même tellement mieux que c'est probablement cet algo ou un dérivé qui est utilisé par VB pour tracer ces lines. Voir : http://fr.wikipedia.org/wiki/Algorithme_de_trac%C3%A9_de_segment_de_ Bresenham
J'ai la flemme de retranscrire en VB, mais je l'avais fait il y a longtemps dans un autre langage et c'était parfait.
-- Jean-Marc
On 9 jan, 18:08, at <a...@noemail.fr> wrote:
Bon pour faire avancer le schimili, repasser par les points d'une
droite, c'est pas aussi évident que ça
Dessinez avec Line (de bas en haut) sur la form et le programme essayer
de repasser par les points de la droite. Et bien ça foire. Qui a mieux
?
Pas moi, mais Bresenham, lui dit mieux... Il dit même tellement
mieux que c'est probablement cet algo ou un dérivé qui est utilisé
par VB pour tracer ces lines.
Voir : http://fr.wikipedia.org/wiki/Algorithme_de_trac%C3%A9_de_segment_de_ Bresenham
J'ai la flemme de retranscrire en VB, mais je l'avais fait
il y a longtemps dans un autre langage et c'était parfait.
Bon pour faire avancer le schimili, repasser par les points d'une droite, c'est pas aussi évident que ça
Dessinez avec Line (de bas en haut) sur la form et le programme essayer de repasser par les points de la droite. Et bien ça foire. Qui a mieux ?
Pas moi, mais Bresenham, lui dit mieux... Il dit même tellement mieux que c'est probablement cet algo ou un dérivé qui est utilisé par VB pour tracer ces lines. Voir : http://fr.wikipedia.org/wiki/Algorithme_de_trac%C3%A9_de_segment_de_ Bresenham
J'ai la flemme de retranscrire en VB, mais je l'avais fait il y a longtemps dans un autre langage et c'était parfait.
-- Jean-Marc
at
Jean-Marc a formulé ce samedi :
Pas moi, mais Bresenham, lui dit mieux... Il dit même tellement mieux que c'est probablement cet algo ou un dérivé qui est utilisé par VB pour tracer ces lines. Voir : http://fr.wikipedia.org/wiki/Algorithme_de_trac%C3%A9_de_segment_de_Bresenham
J'ai la flemme de retranscrire en VB, mais je l'avais fait il y a longtemps dans un autre langage et c'était parfait.
Bon ok! Donc j'étais dans le vrai dans ma question à LETROLL quand j'ai écrit "Je me demande en faisant ainsi si on va retrouver exactement et à coup sûr les points de la ligne dessinée à l'écran."
Car effectivement, il faut passer par un algo assez complexe et non pas une simple boucle.
A+
Jean-Marc a formulé ce samedi :
Pas moi, mais Bresenham, lui dit mieux... Il dit même tellement
mieux que c'est probablement cet algo ou un dérivé qui est utilisé
par VB pour tracer ces lines.
Voir :
http://fr.wikipedia.org/wiki/Algorithme_de_trac%C3%A9_de_segment_de_Bresenham
J'ai la flemme de retranscrire en VB, mais je l'avais fait
il y a longtemps dans un autre langage et c'était parfait.
Bon ok! Donc j'étais dans le vrai dans ma question à LETROLL quand j'ai
écrit "Je me demande en faisant ainsi si on va retrouver exactement et
à coup sûr les points de la ligne dessinée à l'écran."
Car effectivement, il faut passer par un algo assez complexe et non pas
une simple boucle.
Pas moi, mais Bresenham, lui dit mieux... Il dit même tellement mieux que c'est probablement cet algo ou un dérivé qui est utilisé par VB pour tracer ces lines. Voir : http://fr.wikipedia.org/wiki/Algorithme_de_trac%C3%A9_de_segment_de_Bresenham
J'ai la flemme de retranscrire en VB, mais je l'avais fait il y a longtemps dans un autre langage et c'était parfait.
Bon ok! Donc j'étais dans le vrai dans ma question à LETROLL quand j'ai écrit "Je me demande en faisant ainsi si on va retrouver exactement et à coup sûr les points de la ligne dessinée à l'écran."
Car effectivement, il faut passer par un algo assez complexe et non pas une simple boucle.
A+
LE TROLL
Salut,
En fait je me suis tenu à l'énoncé : ligne "droite".
Bon,,je vais le faire et passer le code ici, c'est encore le mieux :
"at" a écrit dans le message de news:4b48d28b$0$963$
Jean-Marc a formulé ce samedi :
Pas moi, mais Bresenham, lui dit mieux... Il dit même tellement mieux que c'est probablement cet algo ou un dérivé qui est utilisé par VB pour tracer ces lines. Voir : http://fr.wikipedia.org/wiki/Algorithme_de_trac%C3%A9_de_segment_de_Bresenham
J'ai la flemme de retranscrire en VB, mais je l'avais fait il y a longtemps dans un autre langage et c'était parfait.
Bon ok! Donc j'étais dans le vrai dans ma question à LETROLL quand j'ai écrit "Je me demande en faisant ainsi si on va retrouver exactement et à coup sûr les points de la ligne dessinée à l'écran."
Car effectivement, il faut passer par un algo assez complexe et non pas une simple boucle.
A+
Salut,
En fait je me suis tenu à l'énoncé : ligne "droite".
Bon,,je vais le faire et passer le code ici, c'est encore le mieux :
"at" <at@noemail.fr> a écrit dans le message de
news:4b48d28b$0$963$ba4acef3@news.orange.fr...
Jean-Marc a formulé ce samedi :
Pas moi, mais Bresenham, lui dit mieux... Il dit même tellement
mieux que c'est probablement cet algo ou un dérivé qui est utilisé
par VB pour tracer ces lines.
Voir :
http://fr.wikipedia.org/wiki/Algorithme_de_trac%C3%A9_de_segment_de_Bresenham
J'ai la flemme de retranscrire en VB, mais je l'avais fait
il y a longtemps dans un autre langage et c'était parfait.
Bon ok! Donc j'étais dans le vrai dans ma question à LETROLL quand j'ai
écrit "Je me demande en faisant ainsi si on va retrouver exactement et à
coup sûr les points de la ligne dessinée à l'écran."
Car effectivement, il faut passer par un algo assez complexe et non pas
une simple boucle.
"at" a écrit dans le message de news:4b48d28b$0$963$
Jean-Marc a formulé ce samedi :
Pas moi, mais Bresenham, lui dit mieux... Il dit même tellement mieux que c'est probablement cet algo ou un dérivé qui est utilisé par VB pour tracer ces lines. Voir : http://fr.wikipedia.org/wiki/Algorithme_de_trac%C3%A9_de_segment_de_Bresenham
J'ai la flemme de retranscrire en VB, mais je l'avais fait il y a longtemps dans un autre langage et c'était parfait.
Bon ok! Donc j'étais dans le vrai dans ma question à LETROLL quand j'ai écrit "Je me demande en faisant ainsi si on va retrouver exactement et à coup sûr les points de la ligne dessinée à l'écran."
Car effectivement, il faut passer par un algo assez complexe et non pas une simple boucle.
A+
at
Le 10/01/2010, LE TROLL a supposé :
Salut,
En fait je me suis tenu à l'énoncé : ligne "droite".
Bon,,je vais le faire et passer le code ici, c'est encore le mieux :
Super, il est invisible ton code.
J'ai trouvé ça sur le web:
Private Sub BresLine(InitialX As Long, InitialY As Long, FinalX As Long, FinalY As Long) ' Bresenham's line algorithm for Microsoft Visual Basic 6.0 ' Implementation by Robert Lee July, 2002 Public Domain
ScaleMode = 1 DrawWidth = 1
Dim Steep As Boolean Dim DeltaX As Long, DeltaY As Long, Delta As Long Dim StepX As Long, StepY As Long Dim Coord As Long
Steep = False DeltaX = Abs(FinalX - InitialX) If (FinalX - InitialX) > 0 Then StepX = 1 Else StepX = -1 End If DeltaY = Abs(FinalY - InitialY) If (FinalY - InitialY) > 0 Then StepY = 1 Else StepY = -1 End If If DeltaY > DeltaX Then Steep = True Swap InitialX, InitialY Swap DeltaX, DeltaY Swap StepX, StepY End If Delta = (DeltaY * 2) - DeltaX For Coord = 0 To DeltaX - 1 If Steep Then PSet (InitialY, InitialX), QBColor(3)
Else PSet (InitialX, InitialY) End If While Delta >= 0 InitialY = InitialY + StepY Delta = Delta - (DeltaX * 2) Wend InitialX = InitialX + StepX Delta = Delta + (DeltaY * 2) Next Coord Me.PSet (FinalX, FinalY) End Sub Sub Swap(Var1, Var2) Var1 = Var1 Xor Var2 Var2 = Var2 Xor Var1 Var1 = Var1 Xor Var2 End Sub
Private Sub Command1_Click() BresLine 1680, 2760, 6240, 4080
End Sub
Le 10/01/2010, LE TROLL a supposé :
Salut,
En fait je me suis tenu à l'énoncé : ligne "droite".
Bon,,je vais le faire et passer le code ici, c'est encore le mieux :
Super, il est invisible ton code.
J'ai trouvé ça sur le web:
Private Sub BresLine(InitialX As Long, InitialY As Long, FinalX As
Long, FinalY As Long)
' Bresenham's line algorithm for Microsoft Visual Basic 6.0
' Implementation by Robert Lee July, 2002 Public Domain
ScaleMode = 1
DrawWidth = 1
Dim Steep As Boolean
Dim DeltaX As Long, DeltaY As Long, Delta As Long
Dim StepX As Long, StepY As Long
Dim Coord As Long
Steep = False
DeltaX = Abs(FinalX - InitialX)
If (FinalX - InitialX) > 0 Then
StepX = 1
Else
StepX = -1
End If
DeltaY = Abs(FinalY - InitialY)
If (FinalY - InitialY) > 0 Then
StepY = 1
Else
StepY = -1
End If
If DeltaY > DeltaX Then
Steep = True
Swap InitialX, InitialY
Swap DeltaX, DeltaY
Swap StepX, StepY
End If
Delta = (DeltaY * 2) - DeltaX
For Coord = 0 To DeltaX - 1
If Steep Then
PSet (InitialY, InitialX), QBColor(3)
Else
PSet (InitialX, InitialY)
End If
While Delta >= 0
InitialY = InitialY + StepY
Delta = Delta - (DeltaX * 2)
Wend
InitialX = InitialX + StepX
Delta = Delta + (DeltaY * 2)
Next Coord
Me.PSet (FinalX, FinalY)
End Sub
Sub Swap(Var1, Var2)
Var1 = Var1 Xor Var2
Var2 = Var2 Xor Var1
Var1 = Var1 Xor Var2
End Sub
Private Sub Command1_Click()
BresLine 1680, 2760, 6240, 4080
En fait je me suis tenu à l'énoncé : ligne "droite".
Bon,,je vais le faire et passer le code ici, c'est encore le mieux :
Super, il est invisible ton code.
J'ai trouvé ça sur le web:
Private Sub BresLine(InitialX As Long, InitialY As Long, FinalX As Long, FinalY As Long) ' Bresenham's line algorithm for Microsoft Visual Basic 6.0 ' Implementation by Robert Lee July, 2002 Public Domain
ScaleMode = 1 DrawWidth = 1
Dim Steep As Boolean Dim DeltaX As Long, DeltaY As Long, Delta As Long Dim StepX As Long, StepY As Long Dim Coord As Long
Steep = False DeltaX = Abs(FinalX - InitialX) If (FinalX - InitialX) > 0 Then StepX = 1 Else StepX = -1 End If DeltaY = Abs(FinalY - InitialY) If (FinalY - InitialY) > 0 Then StepY = 1 Else StepY = -1 End If If DeltaY > DeltaX Then Steep = True Swap InitialX, InitialY Swap DeltaX, DeltaY Swap StepX, StepY End If Delta = (DeltaY * 2) - DeltaX For Coord = 0 To DeltaX - 1 If Steep Then PSet (InitialY, InitialX), QBColor(3)
Else PSet (InitialX, InitialY) End If While Delta >= 0 InitialY = InitialY + StepY Delta = Delta - (DeltaX * 2) Wend InitialX = InitialX + StepX Delta = Delta + (DeltaY * 2) Next Coord Me.PSet (FinalX, FinalY) End Sub Sub Swap(Var1, Var2) Var1 = Var1 Xor Var2 Var2 = Var2 Xor Var1 Var1 = Var1 Xor Var2 End Sub
Private Sub Command1_Click() BresLine 1680, 2760, 6240, 4080
End Sub
LE TROLL
J'ai fait un nouveau poste, tou y est, et même davantage
"at" a écrit dans le message de news:4b4990fd$0$933$
Le 10/01/2010, LE TROLL a supposé :
Salut,
En fait je me suis tenu à l'énoncé : ligne "droite".
Bon,,je vais le faire et passer le code ici, c'est encore le mieux :
Super, il est invisible ton code.
J'ai trouvé ça sur le web:
Private Sub BresLine(InitialX As Long, InitialY As Long, FinalX As Long, FinalY As Long) ' Bresenham's line algorithm for Microsoft Visual Basic 6.0 ' Implementation by Robert Lee July, 2002 Public Domain
ScaleMode = 1 DrawWidth = 1
Dim Steep As Boolean Dim DeltaX As Long, DeltaY As Long, Delta As Long Dim StepX As Long, StepY As Long Dim Coord As Long
Steep = False DeltaX = Abs(FinalX - InitialX) If (FinalX - InitialX) > 0 Then StepX = 1 Else StepX = -1 End If DeltaY = Abs(FinalY - InitialY) If (FinalY - InitialY) > 0 Then StepY = 1 Else StepY = -1 End If If DeltaY > DeltaX Then Steep = True Swap InitialX, InitialY Swap DeltaX, DeltaY Swap StepX, StepY End If Delta = (DeltaY * 2) - DeltaX For Coord = 0 To DeltaX - 1 If Steep Then PSet (InitialY, InitialX), QBColor(3)
Else PSet (InitialX, InitialY) End If While Delta >= 0 InitialY = InitialY + StepY Delta = Delta - (DeltaX * 2) Wend InitialX = InitialX + StepX Delta = Delta + (DeltaY * 2) Next Coord Me.PSet (FinalX, FinalY) End Sub Sub Swap(Var1, Var2) Var1 = Var1 Xor Var2 Var2 = Var2 Xor Var1 Var1 = Var1 Xor Var2 End Sub
Private Sub Command1_Click() BresLine 1680, 2760, 6240, 4080
End Sub
J'ai fait un nouveau poste, tou y est, et même davantage
"at" <at@noemail.fr> a écrit dans le message de
news:4b4990fd$0$933$ba4acef3@news.orange.fr...
Le 10/01/2010, LE TROLL a supposé :
Salut,
En fait je me suis tenu à l'énoncé : ligne "droite".
Bon,,je vais le faire et passer le code ici, c'est encore le mieux :
Super, il est invisible ton code.
J'ai trouvé ça sur le web:
Private Sub BresLine(InitialX As Long, InitialY As Long, FinalX As Long,
FinalY As Long)
' Bresenham's line algorithm for Microsoft Visual Basic 6.0
' Implementation by Robert Lee July, 2002 Public Domain
ScaleMode = 1
DrawWidth = 1
Dim Steep As Boolean
Dim DeltaX As Long, DeltaY As Long, Delta As Long
Dim StepX As Long, StepY As Long
Dim Coord As Long
Steep = False
DeltaX = Abs(FinalX - InitialX)
If (FinalX - InitialX) > 0 Then
StepX = 1
Else
StepX = -1
End If
DeltaY = Abs(FinalY - InitialY)
If (FinalY - InitialY) > 0 Then
StepY = 1
Else
StepY = -1
End If
If DeltaY > DeltaX Then
Steep = True
Swap InitialX, InitialY
Swap DeltaX, DeltaY
Swap StepX, StepY
End If
Delta = (DeltaY * 2) - DeltaX
For Coord = 0 To DeltaX - 1
If Steep Then
PSet (InitialY, InitialX), QBColor(3)
Else
PSet (InitialX, InitialY)
End If
While Delta >= 0
InitialY = InitialY + StepY
Delta = Delta - (DeltaX * 2)
Wend
InitialX = InitialX + StepX
Delta = Delta + (DeltaY * 2)
Next Coord
Me.PSet (FinalX, FinalY)
End Sub
Sub Swap(Var1, Var2)
Var1 = Var1 Xor Var2
Var2 = Var2 Xor Var1
Var1 = Var1 Xor Var2
End Sub
Private Sub Command1_Click()
BresLine 1680, 2760, 6240, 4080
"at" a écrit dans le message de news:4b4990fd$0$933$
Le 10/01/2010, LE TROLL a supposé :
Salut,
En fait je me suis tenu à l'énoncé : ligne "droite".
Bon,,je vais le faire et passer le code ici, c'est encore le mieux :
Super, il est invisible ton code.
J'ai trouvé ça sur le web:
Private Sub BresLine(InitialX As Long, InitialY As Long, FinalX As Long, FinalY As Long) ' Bresenham's line algorithm for Microsoft Visual Basic 6.0 ' Implementation by Robert Lee July, 2002 Public Domain
ScaleMode = 1 DrawWidth = 1
Dim Steep As Boolean Dim DeltaX As Long, DeltaY As Long, Delta As Long Dim StepX As Long, StepY As Long Dim Coord As Long
Steep = False DeltaX = Abs(FinalX - InitialX) If (FinalX - InitialX) > 0 Then StepX = 1 Else StepX = -1 End If DeltaY = Abs(FinalY - InitialY) If (FinalY - InitialY) > 0 Then StepY = 1 Else StepY = -1 End If If DeltaY > DeltaX Then Steep = True Swap InitialX, InitialY Swap DeltaX, DeltaY Swap StepX, StepY End If Delta = (DeltaY * 2) - DeltaX For Coord = 0 To DeltaX - 1 If Steep Then PSet (InitialY, InitialX), QBColor(3)
Else PSet (InitialX, InitialY) End If While Delta >= 0 InitialY = InitialY + StepY Delta = Delta - (DeltaX * 2) Wend InitialX = InitialX + StepX Delta = Delta + (DeltaY * 2) Next Coord Me.PSet (FinalX, FinalY) End Sub Sub Swap(Var1, Var2) Var1 = Var1 Xor Var2 Var2 = Var2 Xor Var1 Var1 = Var1 Xor Var2 End Sub
Private Sub Command1_Click() BresLine 1680, 2760, 6240, 4080
End Sub
at
Après mûre réflexion, LE TROLL a écrit :
J'ai fait un nouveau poste, tou y est, et même davantage
Ou ?
Après mûre réflexion, LE TROLL a écrit :
J'ai fait un nouveau poste, tou y est, et même davantage
Car ton message ne passe pas avec news.orange.fr sans doute parce que tu as mis des pièces jointes ?
Bon sinon ton programme ne redessine pas une ligne, il repasse par tous les points possibles de la ligne et recupère la couleur à chaque fois. Ce qui fait que si je dessine une ligne à l'execution
Line (100, 100)-(700, 400), QBColor(0)
avant qu'une autre ligne ne soit dessinée au hasard par ta formule
Line (x, y)-(x1, y1), QBColor(14)
et que ensuite on efface avec
me.cls
ton
For i = x To x1 ' écriture For j = y To y1 PSet (i, j), c(i, j) Next j Next i
il redessine les deux lignes (!?), dont une est altérée (la 1ere) au cas ou elle ne s'inscrit pas dans le champ de la deuxième. Donc ce n'est pas au point :)
D'ailleurs si tu remplaces c(i,j) qui désigne la couleur récupérée par 0 (du noir) ça dessine un beau rectangle plein.
Car ton message ne passe pas avec news.orange.fr sans doute parce que
tu as mis des pièces jointes ?
Bon sinon ton programme ne redessine pas une ligne, il repasse par tous
les points possibles de la ligne et recupère la couleur à chaque fois.
Ce qui fait que si je dessine une ligne à l'execution
Line (100, 100)-(700, 400), QBColor(0)
avant qu'une autre ligne ne soit dessinée au hasard par ta formule
Line (x, y)-(x1, y1), QBColor(14)
et que ensuite on efface avec
me.cls
ton
For i = x To x1 ' écriture
For j = y To y1
PSet (i, j), c(i, j)
Next j
Next i
il redessine les deux lignes (!?), dont une est altérée (la 1ere) au
cas ou elle ne s'inscrit pas dans le champ de la deuxième. Donc ce
n'est pas au point :)
D'ailleurs si tu remplaces c(i,j) qui désigne la couleur récupérée par
0 (du noir) ça dessine un beau rectangle plein.
Car ton message ne passe pas avec news.orange.fr sans doute parce que tu as mis des pièces jointes ?
Bon sinon ton programme ne redessine pas une ligne, il repasse par tous les points possibles de la ligne et recupère la couleur à chaque fois. Ce qui fait que si je dessine une ligne à l'execution
Line (100, 100)-(700, 400), QBColor(0)
avant qu'une autre ligne ne soit dessinée au hasard par ta formule
Line (x, y)-(x1, y1), QBColor(14)
et que ensuite on efface avec
me.cls
ton
For i = x To x1 ' écriture For j = y To y1 PSet (i, j), c(i, j) Next j Next i
il redessine les deux lignes (!?), dont une est altérée (la 1ere) au cas ou elle ne s'inscrit pas dans le champ de la deuxième. Donc ce n'est pas au point :)
D'ailleurs si tu remplaces c(i,j) qui désigne la couleur récupérée par 0 (du noir) ça dessine un beau rectangle plein.