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

VB.NET Discussion :

Dimensions d'une Form, Pixels ou autre ?


Sujet :

VB.NET

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    juin 2007
    Messages
    355
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juin 2007
    Messages : 355
    Points : 118
    Points
    118
    Par défaut Dimensions d'une Form, Pixels ou autre ?
    Bonjour à tous

    J'ai un projet avec une Form dont les dimensions sont définies à 1100 x 786
    A l'affichage de la Form, aucun problème si je ne modifie pas les dimensions par programe.
    Par exemple si je mets la commande suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
        Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
            Me.Size = New Size(1100, 786)
     
        End Sub
    Les dimensions de ma Forme sont nettemen plus grande que prévues.

    N'y comprenant rien, j'ai enlevé cette instruction, rajouté un bouton et un textbox pour afficher les valeurs Width et Height de ma Form.
    Et là, je m'apperçois que le système me renvoi comme valeurs 735 et 492, ce qui ne correspond à rien, et surement pas des pixels car les dimensions de ma Form occupent un espace qui correspond bien sur mon écran de 1920x1080 pixels (voir l'image suivante)



    Quand je code Me.Size = New Size( .....), quelles sont les valeurs que je dois y mettre ?

    Quelqu'un a-t-il une réponse ?

    Merci de votre aide

    Claude Azoulai

  2. #2
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    janvier 2007
    Messages
    9 962
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : janvier 2007
    Messages : 9 962
    Points : 27 033
    Points
    27 033
    Par défaut
    En Dotnet, les dimensions d'un contrôle sont toujours données en pixels.

    Attention à la propriété que tu utilise. Size donne/fixe la dimension totale de la form, ClientSize donne/fixe la dimension de la partie cliente de la forme, c-à-d la partie qui reçois les contrôles et donc sans compter les bordures et barre de titre.

    Attention aussi à tenir compte des autres éléments de l'écran. Par exemple pour un écran en 1900x1200, pour avoir du plein écran, il faut tenir compte de la barre des tâche, et donc donner une dimension plutôt de l'ordre de 1900x1170 (à supposer que la barre des tâches soit positionnée en bas de l'écran et que la form soit, elle, positionnée en 0,0 )
    --- Sevyc64 ---

    Parce que le partage est notre force, la connaissance sera notre victoire

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    juin 2007
    Messages
    355
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juin 2007
    Messages : 355
    Points : 118
    Points
    118
    Par défaut
    Merci à sevyc64 pour ta réponse

    Sur mon ordinateur ça ne fonctionne pas.
    Note : Je travaille en visual Basic
    Pour le vérifier, j'ai créé une application dans laquelle, j'ai mis :
    1 - Un panel réglé à Size=500;500 dans la fenêtre des propriétés
    2 - Un textbox
    3 - Un button
    J'ai réglé tous les "Anchor" et les "Dock" sur None

    Dans l'évevement Button1_Click, j'ais mis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim L, H As Integer
            L = Panel1.Width
            H = Panel1.Height
            TextBox1.Text = L.ToString & " x " & H.ToString
        End Sub
    Voici ce que j'obtiens !!!!!



    C'est incompréhensible, notament la hauteur et la largeur ne sont pas indentiques en plus du fait que les valeurs correspondent à rien.

    Peut-être que j'ai une mauvaise installation de VS2010 version express

    Peux-tu prendre un peu de temps pour le vérifier chez toi s'il te plait et me donner la réponse

    Merci de ton aide précieuse

    Claude Azoulai

  4. #4
    Membre chevronné Avatar de Danyel
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    juillet 2005
    Messages
    1 645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : juillet 2005
    Messages : 1 645
    Points : 1 943
    Points
    1 943
    Par défaut
    Je viens de tester la chose et j'ai bien dans mon panel les dimensions que je lui ai donne ...
    Que les neurones soient avec toi, jeune padawan.
    Ne pas oublier, qu'un métier, développer être.
    Effectuer des recherches et lire les tutos, avant de poster, tu dois.
    Aucune question technique, faites par MP, tu ne dois.

  5. #5
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    janvier 2007
    Messages
    9 962
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : janvier 2007
    Messages : 9 962
    Points : 27 033
    Points
    27 033
    Par défaut
    idem.

    Donne nous le contenu du fchier Form1.designer.vb de ce petit exemple simpliste.
    --- Sevyc64 ---

    Parce que le partage est notre force, la connaissance sera notre victoire

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    juin 2007
    Messages
    355
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juin 2007
    Messages : 355
    Points : 118
    Points
    118
    Par défaut
    Voici Form1.Desiner.vb ouvert avec NotePad

    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
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    ---------------------------------------------------------------------------------------
    <Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
    Partial Class Form1
        Inherits System.Windows.Forms.Form
     
        'Form remplace la méthode Dispose pour nettoyer la liste des composants.
        <System.Diagnostics.DebuggerNonUserCode()> _
        Protected Overrides Sub Dispose(ByVal disposing As Boolean)
            Try
                If disposing AndAlso components IsNot Nothing Then
                    components.Dispose()
                End If
            Finally
                MyBase.Dispose(disposing)
            End Try
        End Sub
     
        'Requise par le Concepteur Windows Form
        Private components As System.ComponentModel.IContainer
     
        'REMARQUE*: la procédure suivante est requise par le Concepteur Windows Form
        'Elle peut être modifiée à l'aide du Concepteur Windows Form.  
        'Ne la modifiez pas à l'aide de l'éditeur de code.
        <System.Diagnostics.DebuggerStepThrough()> _
        Private Sub InitializeComponent()
            Me.Panel1 = New System.Windows.Forms.Panel()
            Me.TextBox1 = New System.Windows.Forms.TextBox()
            Me.Button1 = New System.Windows.Forms.Button()
            Me.Panel1.SuspendLayout()
            Me.SuspendLayout()
            '
            'Panel1
            '
            Me.Panel1.Anchor = System.Windows.Forms.AnchorStyles.None
            Me.Panel1.BackColor = System.Drawing.Color.Blue
            Me.Panel1.Controls.Add(Me.Button1)
            Me.Panel1.Controls.Add(Me.TextBox1)
            Me.Panel1.Location = New System.Drawing.Point(0, 0)
            Me.Panel1.Name = "Panel1"
            Me.Panel1.Size = New System.Drawing.Size(500, 500)
            Me.Panel1.TabIndex = 0
            '
            'TextBox1
            '
            Me.TextBox1.Anchor = System.Windows.Forms.AnchorStyles.None
            Me.TextBox1.Font = New System.Drawing.Font("Microsoft Sans Serif", 14.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
            Me.TextBox1.Location = New System.Drawing.Point(106, 184)
            Me.TextBox1.Name = "TextBox1"
            Me.TextBox1.Size = New System.Drawing.Size(280, 39)
            Me.TextBox1.TabIndex = 0
            '
            'Button1
            '
            Me.Button1.Anchor = System.Windows.Forms.AnchorStyles.None
            Me.Button1.Font = New System.Drawing.Font("Microsoft Sans Serif", 12.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
            Me.Button1.Location = New System.Drawing.Point(152, 315)
            Me.Button1.Name = "Button1"
            Me.Button1.Size = New System.Drawing.Size(191, 118)
            Me.Button1.TabIndex = 1
            Me.Button1.Text = "Dimensions" & Global.Microsoft.VisualBasic.ChrW(13) & Global.Microsoft.VisualBasic.ChrW(10) & "du" & Global.Microsoft.VisualBasic.ChrW(13) & Global.Microsoft.VisualBasic.ChrW(10) & "Panel"
            Me.Button1.UseVisualStyleBackColor = True
            '
            'Form1
            '
            Me.AutoScaleDimensions = New System.Drawing.SizeF(9.0!, 20.0!)
            Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
            Me.ClientSize = New System.Drawing.Size(640, 547)
            Me.Controls.Add(Me.Panel1)
            Me.Name = "Form1"
            Me.Text = "Form1"
            Me.Panel1.ResumeLayout(False)
            Me.Panel1.PerformLayout()
            Me.ResumeLayout(False)
     
        End Sub
        Friend WithEvents Panel1 As System.Windows.Forms.Panel
        Friend WithEvents Button1 As System.Windows.Forms.Button
        Friend WithEvents TextBox1 As System.Windows.Forms.TextBox
     
    End Class
    -----------------------------------------------------------------------------------
    Merci de votre aide

    Claude Azoulai

  7. #7
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    janvier 2007
    Messages
    9 962
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : janvier 2007
    Messages : 9 962
    Points : 27 033
    Points
    27 033
    Par défaut
    Ok, la seule différence notable avec mon code porte sur la ligne Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)Tu as certainement dû personnaliser ton Windows, ce paramètre est apparemment automatiquement calculé en fonction de la police et de la taille de police configurée dans Windows. Ceci afin de respecter les proportions entre plusieurs postes de développeurs ou entre les postes d'utilisateur et le poste où a été développé l'application, un redimensionnement serait automatiquement effectué (j'avoue ne pas tout bien saisir des informations trouvées).

    La propriété AutoScaleMode de la form est, par défaut sur Font. A priori, de la mettre sur None devrait empêcher cette remise à l'échelle.
    --- Sevyc64 ---

    Parce que le partage est notre force, la connaissance sera notre victoire

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    juin 2007
    Messages
    355
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juin 2007
    Messages : 355
    Points : 118
    Points
    118
    Par défaut
    Merci sevy64

    En effet, la propriété AutoScaleMode etait sur Font.
    Je l'ai mis sur None et ça a fonctionné.
    Il n'empèche que les dimensions du panel sur mon écran correspondent maintenant à 750 x 750 pixels, alors qu'il était plus petit et correspondait à 500 x 500 pixels auparavant.
    Mistère......mistère !!!!!!!!!!!!!!!
    En tous les cas, tu m'a bien aidé et je t'en remercie.

    Claude Azoulai

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

Discussions similaires

  1. Un control d'une forme sur un autre thread?
    Par Eric_M dans le forum VB.NET
    Réponses: 5
    Dernier message: 25/01/2011, 04h58
  2. Rafraîchir une form depuis un autre thread
    Par dens19 dans le forum C#
    Réponses: 4
    Dernier message: 24/11/2009, 00h29
  3. Réponses: 5
    Dernier message: 07/03/2008, 20h46
  4. Passer une variable d'une form a l'autre
    Par 6BORG dans le forum Delphi
    Réponses: 3
    Dernier message: 19/08/2006, 18h15
  5. [VB6] Dimensions d'une form - résolution écran
    Par eagleleader dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 09/12/2005, 16h10

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