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

Windows Forms Discussion :

[C#] [WinForms] sur [VS.NET] question sur le panel


Sujet :

Windows Forms

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 7
    Points : 6
    Points
    6
    Par défaut [Résolu][C#] [WinForms] sur [VS.NET] question sur le panel
    Bonjour voila mon probleme,

    Alors j'ai mis un panel sur un form et ensuite a l'aide de la classe drawing et de l'objet rectangle j'ai dessiné une grille sur mon panel tout ceci dans l'evenement paint du panel.
    Maintenant j'aimerais pouvoir cliquer sur le panel et plus particuliérement dans une des cases de ma grille et que l'espace delimiter par cette case de la grille change par exemple de couleur ou que une image se mette a l'interieur.
    voila mon code

    pour la methode panel_paint

    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
     
    	private void pl_adverssaire_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
    		{
    			ArrayList grille_adverssaire=new ArrayList();
    			for(int i=0;i<=270;i=i+30)
    			{	
    				for(int j=0;j<=270;j=j+30)
    				{
    					grille_adverssaire.Add(new Rectangle(10+i,10+j,30,30));
    				}
    			}
    			foreach(Rectangle rec in grille_adverssaire)
    			{
    				e.Graphics.DrawRectangle(SystemPens.WindowText, rec);
    			}
    		}
    Je precise que je fait se travaille pour une epti de bts et que la grille me servira pour une bataille navalle.[/b]

  2. #2
    Membre chevronné
    Avatar de Piotrek
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 869
    Points : 1 904
    Points
    1 904
    Par défaut
    Salut

    je me suis amuse a le faire avec un gradient peint dans la case cliquee, en vb.net:

    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
     
        Dim MousePos As Point
     
        Private Sub MultiZone_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MultiZone.MouseDown
     
            MousePos = New Point(e.X, e.Y)
     
            'on force le repaint
            MultiZone.Refresh() 
     
        End Sub
        Private Sub MultiZone_Paint(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles MultiZone.Paint
     
            Dim i As Int32
            Dim j As Int32
            Dim rec As Rectangle
     
            Dim grille_adverssaire As ArrayList = New ArrayList
            For i = 0 To 270 Step 30
     
                For j = 0 To 270 Step 30
     
                    grille_adverssaire.Add(New Rectangle(10 + i, 10 + j, 30, 30))
     
                Next
            Next
            For Each rec In grille_adverssaire
     
                e.Graphics.DrawRectangle(SystemPens.WindowText, rec)
     
                If rec.Contains(MousePos) Then
     
                    Dim linGrBrush As New LinearGradientBrush(New Point(0, 0), New Point(MultiZone.Width, 0), Color.CornflowerBlue, Color.FromArgb(255, 0, 0, 0))
     
                    e.Graphics.FillRectangle(linGrBrush, rec)
     
                End If
     
            Next
     
        End Sub
    et bien waw c'est bôôôôô

    [RAJOUT] je precise: la brush c'est ce qui va te permettre de definir une couleur, un gradient comme je l'ai fait, ou une image, mais aussi la trensprence de celle ci (avec la propriete Blend) etc...
    + de details sur celle ci:
    http://msdn.microsoft.com/library/en-us/cpref/html/frlrfSystemDrawingBrushClassTopic.asp
    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vbcon/html/vbconpensbrushes.asp

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 7
    Points : 6
    Points
    6
    Par défaut gné
    Et en c# sa donne qu'oi parce que vb moi pas trop connaître pour pas dire pas du tout.

  4. #4
    Membre chevronné
    Avatar de Piotrek
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 869
    Points : 1 904
    Points
    1 904
    Par défaut
    rooo, il faut telecharger sharpdevelop, faineant!

    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
     
    	Point MousePos;
     
    	private void MultiZone_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
    	{
    		MousePos = new Point(e.X, e.Y);
    		//on force le repaint
    		MultiZone.Refresh();
    	}
     
    	private void MultiZone_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
    	{
    		Int32 i;
    		Int32 j;
    		Rectangle rec;
    		ArrayList grille_adverssaire = new ArrayList();
    		for (int i = 0; i <= 270; i += 30) {
    			for (int j = 0; j <= 270; j += 30) {
    				grille_adverssaire.Add(new Rectangle(10 + i, 10 + j, 30, 30));
    			}
    		}
    		foreach (int rec in grille_adverssaire) {
    			e.Graphics.DrawRectangle(SystemPens.WindowText, rec);
    			if (rec.Contains(MousePos)) {
    				LinearGradientBrush linGrBrush = new LinearGradientBrush(new Point(0, 0), new Point(MultiZone.Width, 0), Color.CornflowerBlue, Color.FromArgb(255, 0, 0, 0));
    				e.Graphics.FillRectangle(linGrBrush, rec);
    			}
    		}
    	}
    MultiZone est le nom de mon panel, comme tu vois j'y ai pas change grand chose dans ton code

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 7
    Points : 6
    Points
    6
    Par défaut merci
    Je te remercie. je suis un fenéant c vrai mais je savais même pas qu'il existait un logiciel de se genre donc j'ai encore decouvert un truc.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MFC] [Visual.NET] Question sur l'impression
    Par LapinGarou dans le forum MFC
    Réponses: 8
    Dernier message: 31/03/2006, 08h51
  2. [VB.NET] Question sur la console?
    Par waldo2188 dans le forum Windows Forms
    Réponses: 5
    Dernier message: 05/04/2005, 16h51
  3. [VB.NET] Question sur le deploiement
    Par TONY44 dans le forum ASP.NET
    Réponses: 8
    Dernier message: 22/10/2004, 09h28
  4. [VB.NET] Question sur le pilotage d'Excel
    Par alfprod dans le forum Windows Forms
    Réponses: 4
    Dernier message: 20/10/2004, 15h15
  5. [VB.NET] Question sur liaison VB et Access
    Par Hoegaarden dans le forum Accès aux données
    Réponses: 2
    Dernier message: 18/05/2004, 09h35

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