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 :

Alignement image graphic


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Alignement image graphic
    Bonjour
    Je crée un programme dans lequel je suis confronté à un petit problème sur une notion que je n'avait jamais abordé avant
    J'ai plusieurs chemin d'image (BMP, JPG et PNG) et j'aimerais tous les charger et les faire entrer dans un Graphics ...
    En gros, j'aimerais faire un truc comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
        Function Generer(ByVal Chemins As String()) As Graphics
            Dim Graphics As Graphics
     
            For Each Chemin As String In Chemins
                Dim Image as New ImageLoadFrom(Chemin)
                Graphics.DrawImage(Image)
            Next
     
            Return Graphics
        End Function
    Mais que les images chargé s'aligne intelligemment les une à la suite des autres dans le graphics (Après, j'imprime le graphics)
    Voilà, en espérant que c'est assez compréhensible

  2. #2
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    il suffit de réfléchir un peu
    drawimage permet de définir x et y
    sur une image on peut connaitre x
    il suffit donc d'incrémenter une variable x ou y
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Invité
    Invité(e)
    Par défaut
    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
        Private Sub Generer(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles Document.PrintPage
            Dim Point As Point
            Dim Last_Width As Integer
            Dim Last_Height As Integer
     
            e.Graphics.SmoothingMode = Drawing2D.SmoothingMode.HighQuality
     
            For Each Chemin In Liste_Image.Items
                Dim Image As System.Drawing.Image = System.Drawing.Image.FromFile(Chemin)
     
                If (Image.Width + Last_Width <= e.PageBounds.Width) Then
                    Point = New Point(Point.X + Last_Width, Point.Y)
                    Last_Width = Image.Width
                    Last_Height = 0
                ElseIf (Image.Height + Last_Height <= e.PageBounds.Height) Then
                    Point = New Point(Point.X, Point.Y + Last_Height)
                    Last_Width = 0
                    Last_Height = Image.Height
                Else
                    MsgBox("Pas d'accord ...")
                    Last_Width = 0
                    Last_Height = 0
                    Continue For
                End If
     
                e.Graphics.DrawImage(Image, Point)
                Image.Dispose()
            Next
        End Sub
    Pour l'instant j'en suis là ...
    ET quand je lui envoie deux image, il m'en affiche qu'une ...
    Dernière modification par Invité ; 17/09/2012 à 19h34.

  4. #4
    Invité
    Invité(e)
    Par défaut

  5. #5
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    mets un point d’arrêt et fait du pas à pas pour voir si tu passes bien plusieurs fois dans la boucle et si point contient bien ce que tu penses
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  6. #6
    Invité
    Invité(e)
    Par défaut
    Ça ne m'aide pas trop ...
    Par contre, j'ai découvert que PageBounds.Height et Width était exprimé en Inch (Pouce).
    Comment convertir des Inch en Pixel ?

  7. #7
    Membre très actif
    Homme Profil pro
    Retraité intello
    Inscrit en
    Juillet 2012
    Messages
    186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Retraité intello

    Informations forums :
    Inscription : Juillet 2012
    Messages : 186
    Par défaut
    Bonjour Patak

    C'est votre ligne 8 qui est en défaut. Il fallait écrire

    Cordialement.

  8. #8
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    Citation Envoyé par Jean-Marie Grave Voir le message
    C'est votre ligne 8 qui est en défaut. Il fallait écrire
    pas du tout
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  9. #9
    Invité
    Invité(e)
    Par défaut
    J'avais déjà essayé avec : Mais c'est pas bon ...

  10. #10
    Membre extrêmement actif
    Inscrit en
    Avril 2008
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Âge : 65

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 573
    Par défaut
    bonjour Patak

    Adapter un code n'est pas toujours facile
    Comme j'en suis l'auteur je te ferais observer que j'ai use et abuse des bontes du Rectangle...
    L'exemple fonctionne malgre que Dim rect As Rectangle n'est pas initialise hein ..mais dans les coulisses du .Net en fait il vaut:
    -par defaut Rectangle.Empty
    C'est un rectangle initialise à new Rectangle(0,0,0,0) de dimensions nulles
    Donc chez moi Rect n'est pas nothing et rect.Height vaut zero ce qui est recherche à l'entree du while et donc je rentre dans le while (premier passge) sans encombre.....
    Helas pour toi tu rentres dans la boucle while (premier passage) sans ticket c'est un image qui vaut Nothing par defaut et ca bloque...
    De plus ce maudit image ne peut etre initialise que par des methodes .....

    Mais puisque il faut ruser rusons ..rentre comme je l'ai fait deguise en rectangle et à l'interieur du while tu "tracke" les dimensions du Image ave le rectangle ...
    Remplace dans les 2 boucles la variable Image par rect
    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
     
     Sub Generer(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles Document.PrintPage
            e.Graphics.SmoothingMode = Drawing2D.SmoothingMode.HighQuality
            e.Graphics.PageUnit = GraphicsUnit.Display
     
            Dim X As Integer = e.MarginBounds.Left
            Dim Y As Integer = e.MarginBounds.Top
            Dim Total As Integer = Liste_Image.Items.Count - 1
            Dim Image As Image
            'rentre deguise en rectangle comme un renard dans le poulailler
            Dim rect As Rectangle
            While ((Y + rect.Height) <= e.MarginBounds.Bottom)
                Image = Image.FromFile(Liste_Image.Items(Index))
                'maj
                 rect= new Rectangle(0,0,Image.Width,Image.Height)
     
             While (((X + rect.Width) <= e.MarginBounds.Right) And (Index < Total))
                    e.Graphics.DrawImage(Image, New Point(X, Y))
     
                    Index += 1
                    X += Image.Width
     
                    Image = Image.FromFile(Liste_Image.Items(Index))
                   'maj
                   rect= new Rectangle(0,0,Image.Width,Image.Height)
     
                End While
     
                Image = Image.FromFile(Liste_Image.Items(Index - 1))
                'maj
                 rect= new Rectangle(0,0,Image.Width,Image.Height)
                X = e.MarginBounds.Left
                Y += Image.Height
     
            End While
     
            If (Index < Total) Then
                e.HasMorePages = True
            End If
        End Sub
    sacre rectangle...............
    bon code.....

  11. #11
    Invité
    Invité(e)
    Par défaut
    J'étais mort se rire en lisant ton message
    Entre comme un renard entre dans un poulailler
    Merci pour tes supers explications !
    J'ai bien retenu que dans certain cas des Class sont initialisé avec des zéros :
    Point sera (X = 0, Y = 0)

    Par contre, j'ai l'impression que VB.NET n’apprécie pas cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Image = Image.FromFile(Liste_Image.Items(Index - 1))
    Message d’erreur :
    InvalidArgument=La valeur '-1' n'est pas valide pour 'index'.
    Encore merci pour tout

Discussions similaires

  1. Alignement images / div Sous ie/Firefox
    Par thierryG dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 02/04/2008, 19h06
  2. alignement image et texte
    Par lumat dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 27/03/2008, 14h51
  3. Problème DIV > alignement image + texte
    Par VFone dans le forum Mise en page CSS
    Réponses: 9
    Dernier message: 08/01/2008, 00h21
  4. Problème alignement image par rapport au texte
    Par finalfx dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 23/05/2006, 08h12
  5. Alignement image avec texte
    Par finalfx dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 18/04/2006, 16h05

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