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

C# Discussion :

unite de mesure de la page d'impression


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Inscrit en
    Août 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 6
    Par défaut unite de mesure de la page d'impression
    Bonjour a vous développeur. Je suis nouveau dans la programmation avec le framework .net et plus particulièrement avec le langage C#. Je me retrouve confronte a un problème. Je voudrais fixer une valeur qu'on ne doit pas dépasser pour les marges horizontales. mais je me retrouve avec un problème. comment récupérer l'unité de mesure de la page d'impression pour m'en servir mais ça n'a pas l'air de marcher.
    voila mon code.

    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
    private void ArrangeMargins(Graphics g)
             {             
                 GraphicsUnit _systemUnit = g.PageUnit;
     
                 if (_systemUnit == GraphicsUnit.Inch)
                 {
                     if (_rightMargin > 1 || _leftMargin > 1)
                     {
                         _leftMargin = 1;
                         _rightMargin = 1;
     
                     }
                 }
                 else
                 {
                     if (_systemUnit == GraphicsUnit.Millimeter)
                     {
                        if (_rightMargin > 25.4 || _leftMargin > 25.4)
                         { 
                             _rightMargin = 25.4;
                             _leftMargin = 25.4;   
                          }            
     
                     }
                 }
             }
    Apparemment cela dépend aussi de la langue du système d'exploitation.
    merci d'avance !

  2. #2
    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 UNITE IMPRESSION
    bonjour
    utilise une boite de dialogue PageSetupDialog pour recuperer les choix utilisateurs.
    Elle te donne access aux margins,pagesize etc....en 1/00 pouces
    il faut les convertir en mm (multilpie 25.4/100)
    Tu les stockera dans des variables de travail globales pour etre utilisees dans le handler Print de ton document
    voici un bout de code vb.net(a retranscrire facilement en c#):

    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
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
     
    'Ajouter un TextBox1 sur forme 
    Imports System.Drawing.Drawing2D
    Imports System.Drawing.Printing
    Public Class frmImpEtapes
        Private WithEvents doc As PrintDocument
        Dim PageAjuste As PageSettings
        Dim pageSetupDlg As PageSetupDialog
        Dim impApercu As PrintPreviewDialog
        Dim impDlg As PrintDialog
        Dim LargeurPage As Single
        Dim HauteurPage As Single
        Dim margeGD As Integer
        Dim margeHB As Integer
     
        Public Sub New()
            ' Cet appel est requis par le Concepteur Windows Form.
            InitializeComponent()
            ' Ajoutez une initialisation quelconque après l'appel InitializeComponent().
            'taille maxi fenetre
            Me.MaximumSize = New Size(640, 480)
            btnImprime.Enabled = False
        End Sub
     
        ' MISE EN PAGE.
        Private Sub btnMiseEnPage_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnMiseEnPage.Click
            'init doc
            doc = New PrintDocument
            'init pageAjuste
            PageAjuste = New PageSettings
            'Init Boite de Dialogue PageSetupDialog
            'lui assigne doc et pageAjuste
            'permet de recuperer  param de mise en page 
            ' si pas de choix on recupere defaultsetting.
            pageSetupDlg = New PageSetupDialog
            pageSetupDlg.Document = doc
            pageSetupDlg.PageSettings = PageAjuste
     
            If pageSetupDlg.ShowDialog = Windows.Forms.DialogResult.OK Then
                PageAjuste = pageSetupDlg.PageSettings
                'Retrouve Dimension Page et Marges (Unites(1/00 pouces) 
                margeGD = PageAjuste.Margins.Left
                margeHB = PageAjuste.Margins.Top
                LargeurPage = PageAjuste.PaperSize.Width
                HauteurPage = PageAjuste.PaperSize.Height
                'Conversion en Unites(mm) = Unites(1/00 pouces) x25.4mm/100
                margeGD = PageAjuste.Margins.Left * 25.4 / 100.0
                margeHB = PageAjuste.Margins.Top * 25.4 / 100.0
                LargeurPage = LargeurPage * 25.4 / 100.0
                HauteurPage = HauteurPage * 25.4 / 100.0
                'centrer la page aux marges
                '(soustraire marges droite-gauche + marges haute-basse)
                If PageAjuste.Landscape Then
                    Dim temp As Single = LargeurPage
                    LargeurPage = HauteurPage - 2 * margeGD
                    HauteurPage = LargeurPage - 2 * margeHB
                Else
                    LargeurPage = LargeurPage - 2 * margeGD
                    HauteurPage = HauteurPage - 2 * margeHB
                End If
     
                Me.TextBox1.Text = TextBox1.Text & LargeurPage.ToString & " X " & HauteurPage.ToString & " mm"
                btnImprime.Enabled = True
            Else
                margeGD = 0
                margeHB = 0
                LargeurPage = 0
                HauteurPage = 0
                Me.TextBox1.Text = ""
                Exit Sub
            End If
        End Sub
        'BOUTON APERCU
        Private Sub btnApercuImpression_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnApercuImpression.Click
            'init boite dialogue PrintPreviewDialog
            'lui assigne doc
            impApercu = New PrintPreviewDialog
            impApercu.Document = doc
            impApercu.BringToFront()
            impApercu.Show()
        End Sub
        'BOUTON IMPRESSION
        Private Sub btnImprime_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnImprime.Click
            'init boite dialogue PrintDialog
            'lui assigne doc
            impDlg = New PrintDialog
            If impDlg.ShowDialog = Windows.Forms.DialogResult.OK Then
                impDlg.Document = doc
                'imprime
                doc.Print()
            Else
                Exit Sub
            End If
            btnImprime.Enabled = False
        End Sub
        'HANDLER DU  DOCUMENT DOC (ESPECE DE ONPAINT) 
        'DESSINER LE TEXTE,DES GRAPHES ETC.......
        Private Sub Doc_PrintPage(ByVal sender As System.Object, _
          ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles _
          doc.PrintPage
            'dessine un rectangle dans coin top/left à la marge
            e.Graphics.DrawRectangle(Pens.Aquamarine, margeGD, margeHB, 100, 100)
     
            ' ----- Limite sortie à une seule page.
            e.HasMorePages = False
        End Sub
     
     
    End Class
    bon code......................

Discussions similaires

  1. Unité de mesure d'une page selon l'imprimante
    Par defluc dans le forum Composants VCL
    Réponses: 19
    Dernier message: 14/11/2008, 13h41
  2. Impression et unités de mesure
    Par vilcoy dans le forum VB.NET
    Réponses: 8
    Dernier message: 23/03/2007, 16h19
  3. Page d'impression
    Par Poussy-Puce dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 02/02/2006, 22h47
  4. page pour impression
    Par maximenet dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 03/01/2006, 10h23
  5. Comment modifier la taille de la page d'impression ?
    Par edam dans le forum API, COM et SDKs
    Réponses: 2
    Dernier message: 03/05/2005, 15h51

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