IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Framework .NET Discussion :

[VB 2008] test d'atteinte d'une region


Sujet :

Framework .NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2006
    Messages
    959
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 959
    Par défaut [VB 2008] test d'atteinte d'une region
    Bonjour,

    j'essaie de comprendre comment fonctionnent les tests d'atteinte.
    j'ai donc créé ce petit programme (en fait repris de chez msdn):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
     
    Imports System.Drawing.Drawing2D
    Imports System.Drawing
     
     
    Public Class Form1
     
        Dim g As Graphics
     
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
     
            g = Me.CreateGraphics
     
            'g.SetClip(New Region(New Rectangle(0, 0, 100, 100)), CombineMode.Replace)
     
            ' Create an array of points for the curve in the second figure.
            Dim points As Point() = { _
               New Point(40, 60), _
               New Point(50, 70), _
               New Point(30, 90)}
     
            Dim path As New GraphicsPath()
     
            path.StartFigure() ' Start the first figure.
            path.AddArc(175, 50, 50, 50, 0, -180)
            path.AddLine(100, 50, 250, 20)
            path.CloseFigure()
     
            ' First figure is not closed.
     
            path.StartFigure() ' Start the second figure.
            path.AddLine(50, 20, 5, 90)
            path.AddCurve(points, 3)
            path.AddLine(50, 150, 150, 180)
            path.CloseFigure() ' Second figure is closed.
            g.FillPath(New SolidBrush(Color.FromArgb(255, 255, 0, 0)), path)
     
            g.SetClip(New Region(New Rectangle(0, 0, 100, 100)), CombineMode.Replace)
     
     
        End Sub
     
     
        Private Sub Form1_MouseClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseClick
     
            If Region.IsVisible(New Point(e.Location), g) Then
                MessageBox.Show("OK")
            Else
                MessageBox.Show("pas OK")
            End If
     
        End Sub
    End Class
    et dans la ligne correspondant à "if region.isvisible...", j'ai un message d'erreur :"la référence d'objet n'est pas définie à une instance d'objet...".

    savez-vous d'où vient l'erreur?

    cordialement,

    lolveley.

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Region.IsVisible est une méthode d'instance, pas une méthode statique (Shared)... Donc il te faut une instance de la classe Region pour l'appeler.
    Comme VB.NET est un langage "magique" (un peu trop magique à mon goût d'ailleurs...), il voit que c'est une méthode d'instance et suppose que Region est une variable de type Region. Seulement, comme cette variable n'est pas initialisée, elle vaut Nothing, et donc l'appel de la méthode plante.

    De plus ta variable g est initialisée dans Button1_Click, donc si tu cliques sur la form avant de cliquer sur le bouton, g n'est pas initialisé et vaut Nothing => autre cause de plantage...

  3. #3
    Membre éprouvé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2006
    Messages
    959
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 959
    Par défaut
    ok.

    je me demande juste si il n'y a pas répétition quand on fournit un "graphic" et une "région".

    lolveley.

Discussions similaires

  1. Réponses: 3
    Dernier message: 07/09/2011, 11h12
  2. Réponses: 2
    Dernier message: 08/12/2005, 14h41
  3. Test d'existence d'une valeur dans une table
    Par dleu dans le forum Bases de données
    Réponses: 9
    Dernier message: 29/12/2004, 10h38
  4. test la valeur d'une date dans une requete
    Par TuxP dans le forum Requêtes
    Réponses: 2
    Dernier message: 07/01/2004, 14h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo