Problème de marging dans un formulaire d'impression

Résolu
Attila54 Messages postés 409 Date d'inscription jeudi 30 juin 2005 Statut Membre Dernière intervention 21 novembre 2013 - 22 févr. 2012 à 16:09
Attila54 Messages postés 409 Date d'inscription jeudi 30 juin 2005 Statut Membre Dernière intervention 21 novembre 2013 - 23 févr. 2012 à 15:33
Bonjour,
J'ai un problème de marging avec un formulaire d'impression
voici le detail de ma classimpression :

Imports System.Drawing.Printing
Imports System.Runtime.InteropServices
 
Public Class ClassImpression
 
    Inherits PrintDocument
 
    Public Sub SetDocument(ByVal feuille As Control)
 
        Const SRCCOPY As Integer = &HCC0020 ' pour copier la source
        Dim controlGraphics As Graphics = feuille.CreateGraphics   ' graphique de la feuille à imprimer
        Dim controlSize As Size = feuille.ClientSize ' taille de la forme à copier
        Buffer = New Bitmap(controlSize.Width + 204, controlSize.Height + 312) ' buffer contenant la feuille à copier 
        Dim bufferGraphics As Graphics = Graphics.FromImage(Buffer)
 
        Dim bufferHdc As IntPtr = bufferGraphics.GetHdc   'hdc de la form destinée à l'impression
        Dim controlHdc As IntPtr = controlGraphics.GetHdc
        '*** DESSINE LE FORMULAIRE DANS LA PICTURE EN LE CENTRANT
        NativeMethods.StretchBlt(bufferHdc, 102, 156, controlSize.Width, controlSize.Height, controlHdc, 0, 0, controlSize.Width, controlSize.Height, SRCCOPY)
        bufferGraphics.ReleaseHdc(bufferHdc)
        controlGraphics.ReleaseHdc(controlHdc)
 
    End Sub
 
    Public Sub Imprimeforme()
        Using printDialogue As New PrintDialog()
            printDialogue.Document = Me
            If printDialogue.ShowDialog = DialogResult.OK Then
                printDialogue.PrinterSettings.DefaultPageSettings.PaperSize = printDialogue.PrinterSettings.PaperSizes.Item(6)    'dimensions pour A4
                Me.Print()
            End If
        End Using
    End Sub
 
    Protected Overrides Sub OnPrintPage(ByVal e As System.Drawing.Printing.PrintPageEventArgs)
 
        e.Graphics.DrawImage(buffer, 0, 0) ' impression proprement dite
        e.HasMorePages = False ' document une seule page
 
    End Sub
 
End Class


et voici le resultat du print :



ce n'est peut être pas flagrand faute de repères mais en gros, j'ai facilement 4 cm de marges de chaque cote de l'impression et moi, je voudrais bien pouvoir imprimer quasiment en pleine page A4 (0.5 a 1 cm pour les marges)

J'ai cherché mais je ne vois rien dans le classimpresion me permettant de modifier cet etat de fait.

Serait je passé a cote ou y aurait il une solution alternative ?
Merci bien

18 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
22 févr. 2012 à 17:12
Bonjour,
Tu utilises au bout du compte une fonction de l'Api de Windows.
Le 2ème et le 3ème paramètre de cette fonction sont l(abscisse et l'ordonnée du "rectangle" de destination.
Et toi, tu leur a donné les valeurs 102 pixels et 156 pixels
Et tu t'étonnes ?



____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
3
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
22 févr. 2012 à 17:21
Pour ton info, je viens de calculer sur ma machine ce que font 102 pixels ===>> 2.698753 cms.
Ajoute à cela la marge par défaut de ton imprimante (en fonction de ses performances) et tu les a, tes 4 cms, pardi.


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
3
Attila54 Messages postés 409 Date d'inscription jeudi 30 juin 2005 Statut Membre Dernière intervention 21 novembre 2013 1
23 févr. 2012 à 15:33
bon, probleme regle en changeant de moniteur et avec un peu de GDI+ ...... la je me sens un peu comment dire ..... dans un grand moment de solitude ...... avec cette histoire de résolution
Merci a toi pour l'aide et la disponibilité
3
Attila54 Messages postés 409 Date d'inscription jeudi 30 juin 2005 Statut Membre Dernière intervention 21 novembre 2013 1
22 févr. 2012 à 16:34
oups je me suis trompé de section
merci a celui qui voudra bien déplacer ce post dans la section adéquate
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Attila54 Messages postés 409 Date d'inscription jeudi 30 juin 2005 Statut Membre Dernière intervention 21 novembre 2013 1
23 févr. 2012 à 09:11
bonjour ucfoutu
oui effectivement, si je reduis les 102 et 156 pixels a une valeur bien inférieure, j'ai maintenant des marges tout a fait correctes. Je te remercie pour ton information.

Par contre chose etrange, je ne peux absolument pas redimensionner mon formulaire en hauteur. Il reste desesperement bloqué a 788 et aucune propriete ne m'indique que cette taille soit bloquée. Je pensais au controlsize.height mais ce n'est pas cela
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
23 févr. 2012 à 09:24
Relis mon dernier message. Il te parle également de l'imprimante elle-même, de ses propres paramètres (ceux que tu peux tripoter) et de ses propres performances dans cette flexibilité.
Tu peux peux modifier autant que tu veux les marges par code ===>> sans aucun effet sur le matériel lui-même si ses marges sont plus grandes.


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
23 févr. 2012 à 09:30
Attends un peu : qu'entends-tu exactement par
je ne peux absolument pas redimensionner mon formulaire en hauteur
?
Car s'il s'agit de la hauteur de la nouvelle image et non de la marge supérieure, c'est encore différent et c'est dans ton controlSize.Height que tout se passe.

Et je vois que tu lui ajoutes 312 pixels !

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
23 févr. 2012 à 09:47
Je ne suis par ailleurs pas du tout VB.Netiste, mais demeure étonné de ce que tu utilises au bout du compte une fonction de l'API de Windows.
Es-tu certain de ce que VB.Net ne t'offre pas du plus facile ?
J'irais à ta place faire un tour là ===>>
Tapez le texte de l'url ici.
Car j'ai bien l'impression que ... Oui !


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
Attila54 Messages postés 409 Date d'inscription jeudi 30 juin 2005 Statut Membre Dernière intervention 21 novembre 2013 1
23 févr. 2012 à 10:01
re bonjour ucfoutu
mon inexperience m'a surement conduit a utiliser des le depart une methode pas vraiment adaptée j'en conviens.
Je regarde le lien de la msdn que tu me donnes avec attention.

Par contre, même si je change le 312 en, par exemple 12 ou 20 cela ne me permet pas de changer d'un iota la hauteur de mon formulaire.
0
Attila54 Messages postés 409 Date d'inscription jeudi 30 juin 2005 Statut Membre Dernière intervention 21 novembre 2013 1
23 févr. 2012 à 10:05
en ce qui concerne l'imprimante, j'ai regardé comme suggéré et je pense que du coté des marges ce doit être bon.
Ce que je n'integre pas c'est que je ne puisse pas modifier la hauteur de mon form meme par la propriete size.
En largeur cela fonctionne et les marges sont bonnes.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
23 févr. 2012 à 10:09
Va d'abord lire le lien.
Je ne reviendrai avec toi que si tu reste avec l'Api de Windows et te demanderai alors des précisions très claires sur les tenants et aboutissants en matière de redimensionnement de ton image. Ca, je saurais puisque non plus VB.Net mais API de Windows).


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
Attila54 Messages postés 409 Date d'inscription jeudi 30 juin 2005 Statut Membre Dernière intervention 21 novembre 2013 1
23 févr. 2012 à 10:13
Que si je reste avec l'API ou que si je passe par un autre moyen ? je me perds la
0
Attila54 Messages postés 409 Date d'inscription jeudi 30 juin 2005 Statut Membre Dernière intervention 21 novembre 2013 1
23 févr. 2012 à 10:21
je resterai avec l'api de windows oui
pour l'instant je lis le graphics Drawimage Method
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
23 févr. 2012 à 10:23
Fais tout ton possible pour ne pas passer par l'API ! Non pas que l'on ne pourrait pas régler le problème, mais parce que tu t'éloignes ainsi considérablement de l'esprit de VB.Net !

Je pense que le premier VB.Nettiste qui passera par là te le criera haut et fort.
Commence à lire le lien que je t'ai donné !
Attends au besoin l'intervention d'un VB.Nettiste !
Ce ne sera qu'en toute dernière extrémité, (si vraiment aucune aide d'un VB.Nettiste) que je te guiderai pour un meilleur emploi de l'API.
Je ne veux pas me fâcher avec les quelques excellents VB.Nettistes qui interviennent sur ce forum, en t'encourageant à utiliser une fonction de l'API de Windows


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
Attila54 Messages postés 409 Date d'inscription jeudi 30 juin 2005 Statut Membre Dernière intervention 21 novembre 2013 1
23 févr. 2012 à 10:27
daccord je suis pret a suivre ton conseil même si cela doit me conduire a tout refaire le formulaire d'impression
0
Attila54 Messages postés 409 Date d'inscription jeudi 30 juin 2005 Statut Membre Dernière intervention 21 novembre 2013 1
23 févr. 2012 à 14:20
j'ai pas mal potassé la documentation mais quand même je viens de m'apercevoir d'un truc que je dois exposer :
- je fais un nouveau projet avec un form appelé form1 vierge de tout
- je veux redimensionner le form1 qui est a 300*300 par defaut

ma hauteur est automatiquement bloquée a 788 quoi que je fasse

Le code ne peut pas etre plus vierge
Public Class Form1
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    End Sub
End Class


Je suis quand même bien bloqué a 788 API ou pas ...... et ca je ne le comprends pas
0
Attila54 Messages postés 409 Date d'inscription jeudi 30 juin 2005 Statut Membre Dernière intervention 21 novembre 2013 1
23 févr. 2012 à 14:59
En fait, je m'apercois que le whith et le height max sont exactement superieurs de 20 pixels a ma resolution d'ecran.

Je continue a chercher, j'ai trouvé un code GDI+ qui pourrait peut être être bien
0
Attila54 Messages postés 409 Date d'inscription jeudi 30 juin 2005 Statut Membre Dernière intervention 21 novembre 2013 1
23 févr. 2012 à 15:09
bon je n'ai plus qu'a changer d'ecran car je suis a ma resolution max ..... dommage car l'appli est utilisée sur un moniteur a resolution plus elevée.
Je continue a chercher et je reviens
0
Rejoignez-nous