LA SOURIS ET SES COORDONNÉES

spy166 Messages postés 207 Date d'inscription jeudi 21 novembre 2002 Statut Membre Dernière intervention 29 mars 2006 - 31 oct. 2004 à 01:55
yassine_bourimech Messages postés 1 Date d'inscription jeudi 15 mars 2007 Statut Membre Dernière intervention 2 décembre 2010 - 2 déc. 2010 à 12:28
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/27189-la-souris-et-ses-coordonnees

yassine_bourimech Messages postés 1 Date d'inscription jeudi 15 mars 2007 Statut Membre Dernière intervention 2 décembre 2010
2 déc. 2010 à 12:28
bonjour
merci bien pour ta source est très interressante
Je veut savoir comment ta crier les fichier.DAT
djipai Messages postés 20 Date d'inscription lundi 22 juin 2009 Statut Membre Dernière intervention 16 août 2010
4 août 2010 à 10:11
Code très bien commenté et très riche.

Merci beaucoup à son auteur.
cs_christoni Messages postés 140 Date d'inscription mardi 25 novembre 2003 Statut Membre Dernière intervention 1 novembre 2010 7
28 août 2007 à 07:05
Bonsoir,

1) Pour le pictureBox colorié en noir, as tu chargé une image noire ou as-tu défini le background du picturebox en noir car il faut pour cette application, charger une image.
Son code analyse une image :

monImage = New Bitmap(dessinFile & "CarteRegions.png")
PictureBox1.Image = CType(monImage, Bitmap)
pixelColor = monImage.GetPixel(aBs, oRd)

2) Pour le code de la couleur, j'utilise beaucoup Firefox avec une de ses extensions : ColorZilla.
Je choisis une image quelconque, clic droit dessus, « ouvrir avec », je choisis Firefox et avec cette extension, on peut connaître le code de toutes les couleurs de l'image.
La fonction GetPixel ci-dessus donne les mêmes informations sur la couleur sous le curseur.

3) Pour peindre, il faut définir une région, sans quoi, le picturebox ou plus généralement le contrôle sera peint en entier.

4) Ce code a été fait avec VB.net 2003, suite à ton message je l'ai testé sous vb.net 2005, c'est nul.
La fonction SetPixel qui recherche chaque pixel de la région ou la zone à repeindre est beaucoup plus (trop) lente.
J'ai repris cette source avec une autre méthode que je posterai en mise à jour.

5) Pour info, j'ai dessiné, sur la base d'une carte d'écolier, les contours de la carte avec un logiciel de dessin 2D et fais les retouches et la couleur avec photoshop.

Bien cordialement.
podan Messages postés 12 Date d'inscription lundi 24 juillet 2006 Statut Membre Dernière intervention 14 novembre 2009
11 août 2007 à 18:53
bonjour
ta source est très interressante mais difficile pour un débutant. j'ai essayé de m'en servir dans un petit exemple simple, un simple picturebox colorié en noir mais ça ne marche pas:
comment sais tu le code hexadécimal (je pense) de la couleur ?
faut-il absolument donner une zone
est- ce 1 code en vb.net ou vb6
comment et avec quoi sont créées la carte et les région
bravo encore et merci
a++
econs Messages postés 4030 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 23 décembre 2008 24
2 nov. 2004 à 23:26
merci bien pour le AndAlso et le OrElse ... çà va être bien pratique çà !
cs_christoni Messages postés 140 Date d'inscription mardi 25 novembre 2003 Statut Membre Dernière intervention 1 novembre 2010 7
1 nov. 2004 à 10:14
Bonjour.
« And » et « AndAlso » :
Avec « And » VB examine toutes les expressions ou conditions.
Avec « AndAlso » Dès qu’une condition ne correspond pas, VB court-circuite
Les autres, puisqu’elles ne sont plus déterminantes pour le résultat final.
Il paraît que ça améliore les performances.
Dans le cas présent, ce n’est peut-être pas utile.
« Une opération logique effectue un court-circuit si le code compilé peut ignorer l'évaluation d'une expression en fonction du résultat d'une autre expression. Si le résultat de la première expression évaluée détermine le résultat final de l'opération, il n'y a pas besoin d'évaluer l'autre expression, car elle ne peut pas changer le résultat final. Un court-circuit peut améliorer les performances si l'expression ignorée est complexe, ou si elle implique des appels de procédure. »
Pour « Or », on a aussi « OrElse ».

Pour colorier une zone :
Dans ce cas si la souris passe sur une zone bleue-ciel ou sur le texte en
Bleu plus foncé, alors la zone passe en rouge et le texte en blanc.

Tout d’abord j’ai déclaré la couleur qui se trouve sous le pointeur de la
Souris :
Nom de la couleur
Dim pixelColor As Color
Obtient la couleur du pixel spécifié dans l’image.
pixelColor = monImage.GetPixel(aBs, oRd)

Ensuite j’ai défini les coordonnées de mes différentes zones bleues :
Si la couleur sous ma souris est bleue clair (ffc6dee5) ou
Bleu foncé (ff4091a9) et si je suis bien dans le rectangle
correspondant aux coordonnées indiquées alors l’opération va fonctionner.
If pixelColor.Name "ffc6dee5" Or pixelColor.Name "ff4091a9" Then
If (aBs > 267 AndAlso aBs < 366) AndAlso (oRd > 10 AndAlso oRd < 79) Then
txtRegion.Text = " NORD-PAS-DE-CALAIS "
Pour chaque pixel de la région définie ci-dessous,
VB renvoie à « RegionBleue »
For aBs = 267 To 366
For oRd = 10 To 79
RegionBleue()
Next oRd
Next aBs
Exit Sub
End If
Ainsi chaque pixel lu bleu clair et redéfini en rouge et le texte
en blanc :
Sub RegionBleue()
' "get" : lire et retenir (obtenir)
' "set" : définir et appliquer
txtRegion.Width = txtRegion.TextLength * 8
If monImage.GetPixel(aBs, oRd).Name = "ffc6dee5" Then
monImage.SetPixel(aBs, oRd, Color.Red)
End If
If monImage.GetPixel(aBs, oRd).Name = "ff4091a9" Then
monImage.SetPixel(aBs, oRd, Color.WhiteSmoke)
End If
End Sub
Il faut définir de petites zones car ça « rame » vite.
Bonne journée.
dionysos6868 Messages postés 310 Date d'inscription jeudi 4 septembre 2003 Statut Membre Dernière intervention 9 juin 2005 1
31 oct. 2004 à 13:35
Alors chapeau je connaissais pas du tout mais je ne comprend pas tellement comment tu fait pour colorier une zone.

Merci beaucoup pour ta source que je vais exploiter pour comprendre 10/10 car tres bien commentée.
spy166 Messages postés 207 Date d'inscription jeudi 21 novembre 2002 Statut Membre Dernière intervention 29 mars 2006
31 oct. 2004 à 01:55
Tien je viens de télécharger ta source et là je découvre un nouveau truc (enfin pour moi c'est nouveau) : "AndAlso"
C'est quoi la différence avec le "And" classique ?
Rejoignez-nous