- private sub mosaique()
-
- Case "7" 'mosaïque
- Dim block, i ,cal , valmax, flag() as integer
- Dim sortie
- Dim Cx 'abscisse du "block" à déssiner
- Dim Cy 'ordonnée du "block" à dessiner
- Dim Tl 'longueur de pciture
- Dim Th'hauteur de picture
-
- block = 100 ' dénominateur de subdivision de l'écran hauteur et longueur (libre)
- tl = picutre1.width / block ' longueur du block
- th = picture1.height / block 'hauteur du block
- 'le block est donc l'unité d'affichage pour la fonction
-
- valmax = block * block ' nbre de block sur l'écran
- ReDim flag(valmax)
- For i = 1 To valmax
- flag(i) = 1 'attribue la valeur 1 à chaque élément du tableau x nombre de blocks
- Next i
-
- For i = 1 To valmax
- cal = Int(Rnd() * valmax) + 1 'génère un nombre aléatoire sur la totalité des blocks et l'incrémente
- If flag(cal) = 1 Then 'si le chiffre tiré est déjà à 1 dans le tableau
- 'c'est à dire qu'il n'as pas déjà été tiré
- flag(cal) = 0 'le passe à 0 pour le marquer comme tiré
- Else ' si il est égale à 0 donc déjà tité
- While flag(cal) = 0 'et tant qu'il est à zéro
- cal = Int(Rnd() * valmax) + 1 ' génère un autre nombre
- Wend 'fin de la condition
- flag(cal) = 0 'le marque comme tiré (vous suivez ?)
- End If
- 'un ligne faisant 100 blocks tout block supérieur à 100 sera donc positionné à partir de la ligne "ligne1" (la première étant la ligne 0 donc ordonnée = 0
- If cal >= block Then
- Cy = Int(cal / (block)) 'divise par le nbre de blocks et prends la
- ' partie entière comme n° de ligne (ordonnée)
- Cyy = (cal / (block)) 'reprends la valeur calcué en Cy mais sans oter la partie entière "ligne"
- Cx = (block) * (Cyy - Cy) 'multiplie le block par la partie décimale pour avoir le
- ' positionnement en colonne (abscisse)
- If Cx = 100 Then ' si l'abscisse = 100 soit bord droite de l'écran, la longueur avec paint
- 'picture renverra une erreur "5"
- Cx = 99 'décale l'abscisse à 99
- End If
- If Cy = 100 Then 'idem pour l'ordonnée, si on est en bas d'écran
- 'rajouter une hauteur donnera une erreur "5"
- Cy = 99
- End If
- Else 'si la valeur tirée est inférieure à 100 l'ordonnée (Cy) sera de 0
- Cx = cal
- Cy = 0
- End If
- 'dessine à l'abscisse et l'ordonnée calculé avec le nombre aléatoire un rectangle coresspondant au même'rectangle de l'image source
- cible.PaintPicture srce.Picture, (Cx) * TL, (Cy) * TH, TL + 1, TH, (Cx) * TL, (Cy) * TH, TL, TH, vbSrcCopy
-
- Next i, passe à la génération du nombre aléatoire suivant
-
- end sub
private sub mosaique()
Case "7" 'mosaïque
Dim block, i ,cal , valmax, flag() as integer
Dim sortie
Dim Cx 'abscisse du "block" à déssiner
Dim Cy 'ordonnée du "block" à dessiner
Dim Tl 'longueur de pciture
Dim Th'hauteur de picture
block = 100 ' dénominateur de subdivision de l'écran hauteur et longueur (libre)
tl = picutre1.width / block ' longueur du block
th = picture1.height / block 'hauteur du block
'le block est donc l'unité d'affichage pour la fonction
valmax = block * block ' nbre de block sur l'écran
ReDim flag(valmax)
For i = 1 To valmax
flag(i) = 1 'attribue la valeur 1 à chaque élément du tableau x nombre de blocks
Next i
For i = 1 To valmax
cal = Int(Rnd() * valmax) + 1 'génère un nombre aléatoire sur la totalité des blocks et l'incrémente
If flag(cal) = 1 Then 'si le chiffre tiré est déjà à 1 dans le tableau
'c'est à dire qu'il n'as pas déjà été tiré
flag(cal) = 0 'le passe à 0 pour le marquer comme tiré
Else ' si il est égale à 0 donc déjà tité
While flag(cal) = 0 'et tant qu'il est à zéro
cal = Int(Rnd() * valmax) + 1 ' génère un autre nombre
Wend 'fin de la condition
flag(cal) = 0 'le marque comme tiré (vous suivez ?)
End If
'un ligne faisant 100 blocks tout block supérieur à 100 sera donc positionné à partir de la ligne "ligne1" (la première étant la ligne 0 donc ordonnée = 0
If cal >= block Then
Cy = Int(cal / (block)) 'divise par le nbre de blocks et prends la
' partie entière comme n° de ligne (ordonnée)
Cyy = (cal / (block)) 'reprends la valeur calcué en Cy mais sans oter la partie entière "ligne"
Cx = (block) * (Cyy - Cy) 'multiplie le block par la partie décimale pour avoir le
' positionnement en colonne (abscisse)
If Cx = 100 Then ' si l'abscisse = 100 soit bord droite de l'écran, la longueur avec paint
'picture renverra une erreur "5"
Cx = 99 'décale l'abscisse à 99
End If
If Cy = 100 Then 'idem pour l'ordonnée, si on est en bas d'écran
'rajouter une hauteur donnera une erreur "5"
Cy = 99
End If
Else 'si la valeur tirée est inférieure à 100 l'ordonnée (Cy) sera de 0
Cx = cal
Cy = 0
End If
'dessine à l'abscisse et l'ordonnée calculé avec le nombre aléatoire un rectangle coresspondant au même'rectangle de l'image source
cible.PaintPicture srce.Picture, (Cx) * TL, (Cy) * TH, TL + 1, TH, (Cx) * TL, (Cy) * TH, TL, TH, vbSrcCopy
Next i, passe à la génération du nombre aléatoire suivant
end sub