begin process at 2008 07 21 01:22:38
1 213 544 membres
13 nouveaux aujourd'hui
14 167 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

PETITE CLASSE POUR DESSINER UN RECTANGLE DE SELECTION DANS UN PICTUREBOX


Information sur la source

Catégorie :Multimédia Source .NET ( DotNet ) Classé sous : rectangle, dessiner, selection, selectionner, limites Niveau : Initié Date de création : 02/02/2008 Date de mise à jour : 04/02/2008 09:42:48 Vu / téléchargé: 4 208 / 210

Note :
Aucune note

Commentaire sur cette source (10)
Ajouter un commentaire et/ou une note

Description

c'est une petite classe qui permet de dessiner un rectangle de sélection dans une PictureBox sans dépasser les limites de cette PictureBox il peut servire comme un petit outil pour la selection ensuite dans une application graphique ;)

Conclusion

c'est une petite classe que j'ai fait grace à l'aide de Lutinore
qui a écrit un petit bout de code et pour les limites de pictureBox c'est de ma programmation ;)
j'espère que ça aide quelqun car j'ai trops cherché une chose pareille mais j'ai pas trouvé surtout que l'utilisation de controlPaint n'est pas utils dans mon cas car elle permet de selectionner mêm autre controls puisqu'elle écrit au dessus de l'écran
merci de mettre vos commantaires
Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

04 février 2008 09:42:48 :
modification dans onPaint() base.OnPaint( e );
  • signaler à un administrateur
    Commentaire de Lutinore le 02/02/2008 18:34:24 administrateur CS

    Merci mais là il me semble que le code est incomplet, tu n'aurais pas oublié de dessiner l'image sous la sélection !?

  • signaler à un administrateur
    Commentaire de vboussema le 02/02/2008 21:53:07

    merci Lutinore  pour ton commentaire
    pour mon controle je veut que la selection soit visible
    peut etre oui j'ai fait  base.OnPaint( e ); en commantaire par faute :( mais j'ai corrigé sa en principe ;)
    sinon c bon la source???
    ah j'ai oublié quand je passe on mode zoome il y a une faute car la dimention de l'image affiché n'est pas celle du pictureBox donc il faut a priori calculer les vrai dimentions de l'image j'ai pas resolus ce problème jusqu'a maintenant si tu as une idée merci

  • signaler à un administrateur
    Commentaire de coq le 03/02/2008 01:13:10 administrateur CS

    Salut,

    Mais pourquoi personne n'aime ControlPaint.DrawReversibleFrame ? :-)

  • signaler à un administrateur
    Commentaire de vboussema le 03/02/2008 07:38:36

    bon coq pour drawReversibleFrame son inconvignant c que lorsqu'on dessine le rectangle de sélection il s'affiche sur l'écran donc s'il y a un control au dessus du pictureBox il va etre affecté par le rectangle de sélection et pas le pic en plus ce problème est plus grave si on veut rendre le rectangle persistant(ne pas l'éffacer dans  le onMouseUp)
    sinon c plus simple ;)
    bien sure pour que le rectangle de sélection ne dépasse pas les  limites du picturebox il faut bien gérer les rectangles.

  • signaler à un administrateur
    Commentaire de Lutinore le 04/02/2008 09:25:27 administrateur CS

    Ca ne marche pas car "base.OnPaint( e );" est toujours en commentaire.

  • signaler à un administrateur
    Commentaire de vboussema le 04/02/2008 09:45:26

    c'est bon j'ai modifié la source
    elle marche maintenant ;)

  • signaler à un administrateur
    Commentaire de vboussema le 04/02/2008 17:10:46

    on ajoute cette méthode pour savoir les coordonnées des  
    points extrèmes de l'image en mode zoome
    [code]    

       /// <summary>
            /// donne les paramètres pour la position de l'image ;)
            /// </summary>
            /// <param name="pbox">PictureBox qui contient l'image</param>
          
            public void OffsetOfImage(PictureBox pbox)
            {
                // Calculer les taux d'étirement/compression de l'image
                float xRatio = 1F;
                float yRatio = 1F;
            
                if (pbox.SizeMode == PictureBoxSizeMode.Zoom)
                {
                    float a = (float)pbox.Height / (float)pbox.Image.Height;
                    float b = (float)pbox.Width / (float)pbox.Image.Width;
                    xRatio = Math.Min(a, b);
                    yRatio = xRatio;
                }
                //// Calculer la taille de l'image affichée
                 Size imgs = new Size((int)(pbox.Image.Width * xRatio), (int)(pbox.Image.Height * yRatio));
    //calculer les différances entre l'image et le picturebox
               int diffx = (int)((pbox.Width - pbox.Image.Width * xRatio) / 2);
                int diffy = (int)((pbox.Height - pbox.Image.Height * yRatio) / 2);
              
               //min est le point minimum le plus haut à gauche de l'image
                min.X = diffx;
                min.Y = diffy;
    //max est le point le plus bax à droite de l'image
                max.X = (int)(diffx + imgs.Width);
                max.Y = (int)(diffy + imgs.Height);
                
            }
    [/code]


    ;)

  • signaler à un administrateur
    Commentaire de csarlin le 20/02/2008 15:31:41

    Alors moi je recherche EXACTEMENT la même chose, mais sous vb...  Quelqu'un peut m'aider ?

  • signaler à un administrateur
    Commentaire de Lutinore le 20/02/2008 17:55:04 administrateur CS

    Colle le code du fichier Dash.cs là : http://tools.codes-sources.com/DotNetCodeConverter.aspx , ça devrait donner quelque chose qui ressemble à du VB.NET

  • signaler à un administrateur
    Commentaire de kgb1917 le 04/06/2008 19:29:52

    Bonjour,

    J'aimerai votre aide sur le point suivant. J'ai suivi le conseil de Lutinore pour passer le code en vb mais j'ai le pb suivant :
    Quand je dessine un rectangle vers la droite et le bas, si la souris dépasse le contrôle, les pointillés du rectangle ne "s'arrêtent" pas aux  limites du contrôle (que ce soit à droite ou à gauche). ça fonctionne sans problème pour les bords haut et gauche du contrôle.

    Je ne parviens pas à résoudre le pb sous vb alors qu'en c#, ça fonctionne très bien (Merci à vboussema).

    Pourriez-vous m'aider  (1 journée et demie que je suis dessus.) ?

    Merci d'avance

Ajouter un commentaire

Pub



Appels d'offres

Dessins techniques
Budget : 60€
Animation Flash - Doma...
Budget : 370€
Application flash medi...
Budget : 1 000€

CalendriCode

Juillet 2008
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Téléchargements

Logiciels à télécharger sur le même thème :

Boutique

Boutique de goodies CodeS-SourceS