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 :

Question de dimension - subtilité


Sujet :

Windows Forms

  1. #1
    Membre régulier
    Profil pro
    Débutant
    Inscrit en
    Février 2007
    Messages
    127
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Débutant
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Février 2007
    Messages : 127
    Points : 87
    Points
    87
    Par défaut Question de dimension - subtilité
    Bonjour à tous,

    Je viens de remarquer quelque chose de particulier lors d'un simple test avec Graphics.DrawRectangle que je ne comprend pas.

    J'ai créer un simple contrôle utilisateur vide et je voulias simplement dessiner un rectangle qui par du point supérieur gauche (0,0) et qui fait tout la largeur et hauteur du control.
    J'ai donc fait le code suivant:

    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
    using System.Drawing;
    using System.Windows.Forms;
     
    namespace AGPUserControl.Controls
    {
    	public partial class essais : UserControl
    	{
    		public essais()
    		{
    			InitializeComponent();
    		}
     
    		protected override void OnPaint(PaintEventArgs e)
    		{
    			e.Graphics.DrawRectangle(
    					new Pen(Color.Red, 1), 
    					new Rectangle( 0, 0, this.Size.Width , this.Size.Height));
    			base.OnPaint(e);
    		}
    	}
    }
    Ce que je ne comprend pas c'est pourquoi le rectangle monter uniquement la bordure supérieur et gauche alors que les bordures de droite et inférieures ne sont pas visibles alors que la largeur et la hauteur sont bien égales au control (hauteur - 0 = hauteur; largeur - 0 = largeur).
    Pourtant, avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.Size.Width - 1 , this.Size.Height - 1
    L'ensemble des bordures est bien dessiné.

    La question est donc : Pourquoi faut il -1 à la largeur et à la hauteur pour afficher l'ensemble des bordures???

  2. #2
    Expert confirmé
    Inscrit en
    Avril 2008
    Messages
    2 564
    Détails du profil
    Informations personnelles :
    Âge : 64

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 564
    Points : 4 441
    Points
    4 441
    Par défaut
    bonjour
    C'est parce que :
    -helas -les informaticiens -ont l'esprit mal tourne et commence à compter à partir de zero au lieu de 1 comme l'epicien du coin ...
    -le pixel zero compte et si tu specifies une largeur de 100 tu as 101 pixels de largeur pour ton rectangle... d'ou la soustraction necessaire(width et height)....
    Ce piege des unites ,des listes ,tableaux qui commencent à zero donnent la migraine auu debut mais apres on s'habitue à tout...
    bon code...

Discussions similaires

  1. Question sur dimension site web
    Par LEK dans le forum Mise en page CSS
    Réponses: 6
    Dernier message: 12/01/2010, 14h51
  2. Question de modélisation multidimensionnelle d'une dimension produits
    Par clementratel dans le forum Conception/Modélisation
    Réponses: 1
    Dernier message: 21/07/2009, 15h02
  3. [SSAS]Question sur les dimensions
    Par geof dans le forum SSAS
    Réponses: 2
    Dernier message: 19/09/2008, 15h49
  4. Réponses: 2
    Dernier message: 18/03/2008, 21h45
  5. questions sur les tabs a plusieurs dimensions
    Par rosviper45 dans le forum C
    Réponses: 16
    Dernier message: 27/11/2005, 14h20

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