Evènement possible sur une portion d'image ?

_Fabien Messages postés 119 Date d'inscription vendredi 17 novembre 2006 Statut Membre Dernière intervention 28 avril 2008 - 19 janv. 2007 à 10:31
_Fabien Messages postés 119 Date d'inscription vendredi 17 novembre 2006 Statut Membre Dernière intervention 28 avril 2008 - 25 janv. 2007 à 10:23
Bonjour,

Est-il possible de déclencher un évènement sur une portion de l'image ?

Sur un picturebox, des évènements sont attachés, mais sur la totalité de l'image. Et sur une portion, est-ce possible ?

10 réponses

jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
19 janv. 2007 à 10:46
Oui, en utilisant l'événement Mouse_Down ou Mouse_up et les coordonnées du curseur.
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
19 janv. 2007 à 11:08
En bidouillant, je pense que tu dois pouvoir vérifier la position du curseur au moment du déclenchement de l'évènement. S'il est dans la bonne zone, tu traite, sinon tu ingore.

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
19 janv. 2007 à 11:20
J'ai un zouli zouli exemple avec VB6
Il devrait être ultra facile à transposer en VB.Net

Si tu le veux, tu dis...
0
_Fabien Messages postés 119 Date d'inscription vendredi 17 novembre 2006 Statut Membre Dernière intervention 28 avril 2008
19 janv. 2007 à 12:47
Comme dit dans le message " http://www.vbfrance.com/infomsg_REPRODUIRE-IMAGES-REACTIVES-HTML-VB-NET_863249.aspx#1 ", je cherche à reproduire les fameuses images réactives du HTML (<map>....</map>) en VB.Net.

A l'aide d'Excel(VBA) et de Wordpad, j'ai déjà pu récupérer les coordonnées d'une <map> et les retranscrire en VB.Net. En voici un extrait :




Dim



newBitmap

As New
Bitmap(362,347)
Dim
g
As Graphics=Graphics.FromImage(newBitmap)




Dim t_polygone(18) as point

t_polygone(0) =

New
Point(243,187)
t_polygone(1) =

New
Point(238,208)
t_polygone(2) =

New
Point(243,209)
t_polygone(3) =

New
Point(243,211)
t_polygone(4) =

New
Point(252,213)
t_polygone(5) =

New
Point(255,209)
t_polygone(6) =

New
Point(262,219)
t_polygone(7) =

New
Point(266,214)
t_polygone(8) =

New
Point(266,201)
t_polygone(9) =

New
Point(270,199)
t_polygone(10) =

New
Point(270,197)
t_polygone(11) =

New
Point(275,194)
t_polygone(12) =

New
Point(275,189)
t_polygone(13) =

New
Point(271,189)
t_polygone(14) =

New
Point(267,195)
t_polygone(15) =

New
Point(264,194)
t_polygone(16) =

New
Point(262,192)
t_polygone(17) =

New
Point(258,195)
t_polygone(18) =

New
Point(251,187)

g.DrawPolygon(
new Pen(color.Black,2),t_polygone)
g.FillPolygon(
New SolidBrush(color.Green),t_polygone)

Donc, mon souci est, qu'en cliquant sur ce polygone, l'évènement sub X_click se déclenche.
Voilà !
jmfmarques, bien sûr que ça m'intéresse. Qui sait, si j'ai le temps, je ferai une source ou un tuto à la fin sur comment reproduire exactement
une image réactive en VB.Net.

En tout cas, fastoche (pour moi) ! Donnez-moi n'importe quel fichier HTML comprenant une image réactive et je suis capable de vous redessiner le graphique sous VB.Net (sauf qu'elle n'est pas réactive pour l'instant). Il m'a fallu 3 heures la première fois (cogitation + code VBA à écrire)
0

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

Posez votre question
_Fabien Messages postés 119 Date d'inscription vendredi 17 novembre 2006 Statut Membre Dernière intervention 28 avril 2008
19 janv. 2007 à 12:49
J'ai oublié une ligne de code :
picturebox1.image = newbitmap
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
19 janv. 2007 à 19:10
Bon... Ca t'intéresse et celà en interessera surment d'autres :

En VB6, donc :

sur une Form :
Une pictureBox Picture1 assez grande avec une image
dans cette picturebox : un contrôle image image1 de la taille de ton choix (pas trop grand, quand même)
en dessous de cette picturebox : une 2ème picturebox d'une taille plus petite que la picture1 mais plus grande que image1 (tu découvriras pourquoi)

Fonctionnement : tu lances et ty fais du drag de image1.

Tu vas vite comprendre comment adapter ce petit truc à ton problème actuel (tu n'as même pas besoin d'image1, si tu gères, en lieu et place, un rectangle fictif dont les largeur et hauteur sont des quotients des hauteur et largeur de Picture1)

Code :

Dim oux As Single
Dim ouy As Single


Private Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long, ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long
Private Declare Function StretchBlt Lib "gdi32" (ByVal hdc As Long, ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal nSrcWidth As Long, ByVal nSrcHeight As Long, ByVal dwRop As Long) As Long


Private Sub Form_Load()
    Me.ScaleMode = vbPixels
    Picture1.ScaleMode = vbPixels
    Picture2.ScaleMode = vbPixels
End Sub


Private Sub Image1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
  oux = Me.ScaleX(X, vbTwips, vbPixels)
  ouy = Me.ScaleY(Y, vbTwips, vbPixels)
End Sub




Private Sub Image1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    If Button = vbLeftButton Then
        Image1.Left = Image1.Left - oux + Me.ScaleX(X, vbTwips, vbPixels)
        Image1.Top = Image1.Top - ouy + Me.ScaleY(Y, vbTwips, vbPixels)
        StretchBlt Picture2.hdc, 0, 0, Picture2.Width, Picture2.Height, Picture1.hdc, Image1.Left, Image1.Top, Image1.Width, Image1.Height, vbSrcCopy
    End If
End Sub

Il est clair que tu n'as pas non plus besoin de "Stretché", toi .
0
_Fabien Messages postés 119 Date d'inscription vendredi 17 novembre 2006 Statut Membre Dernière intervention 28 avril 2008
19 janv. 2007 à 19:25
Tiens, je viens juste de lire à l'instant un de tes codes sources et j'allais te dire que t'es un vilain car tu fais que du VB6 !


Ta maman t'inderdit le VB.Net ? C'est que pour les grands ?

Merci pour ce code ci-dessus . Je vais lire çà ce soir ou ce week-end.

Sinon, tu peux aller te "stretcher" toi même ! Non, mais ! C koi cette insulte ?!?
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
19 janv. 2007 à 19:33
Le VB.Net ?
Pas net du tout et trop plein de lourdeurs ralentissantes ... N'en ferai JAMAIS !
Te confesserais-je qu'il m'est assez souvent arrivé de transposer du VB (mes applications)  en QBasic pour mieux en commercialiser les exécutables (quand je vendais un peu...) ? Pourquoi ? fastoche : indépendance totale et performances certaines ... Celà vaut le coup de s'escrimer avec plus de lignes de code, crois-moi !

Pas fini : alors même que j'ai tout depuis déjà pas mal de temps pour installer VB6, je reste volontairement sous VB5... et je ne m'en trouve pas handicapé... (enfin... il me semble...)
0
_Fabien Messages postés 119 Date d'inscription vendredi 17 novembre 2006 Statut Membre Dernière intervention 28 avril 2008
19 janv. 2007 à 19:52
T'es mieux calé pour que moi. Intéressant à savoir. Bon faut que je dépoussière alors mon vieux Amstrad pour taper du basic : "run ..."
0
_Fabien Messages postés 119 Date d'inscription vendredi 17 novembre 2006 Statut Membre Dernière intervention 28 avril 2008
25 janv. 2007 à 10:23
Je l'ai examiné, mais pas encore testé. J'ai essayé de trouver une solution avec VB.Net, via les curseurs et la souris, mais ces derniers ne contiennent aucune propriété qui indique les coordonnées de la souris.

Bon, je vais essayer de greffer ta méthode.
0
Rejoignez-nous