Attila54
Messages postés409Date d'inscriptionjeudi 30 juin 2005StatutMembreDernière intervention21 novembre 2013
-
22 févr. 2012 à 16:09
Attila54
Messages postés409Date d'inscriptionjeudi 30 juin 2005StatutMembreDernière intervention21 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
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 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
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 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
Attila54
Messages postés409Date d'inscriptionjeudi 30 juin 2005StatutMembreDernière intervention21 novembre 20131 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é
Attila54
Messages postés409Date d'inscriptionjeudi 30 juin 2005StatutMembreDernière intervention21 novembre 20131 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
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 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
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 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
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 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
Attila54
Messages postés409Date d'inscriptionjeudi 30 juin 2005StatutMembreDernière intervention21 novembre 20131 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.
Attila54
Messages postés409Date d'inscriptionjeudi 30 juin 2005StatutMembreDernière intervention21 novembre 20131 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.
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 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
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 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
Attila54
Messages postés409Date d'inscriptionjeudi 30 juin 2005StatutMembreDernière intervention21 novembre 20131 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
Attila54
Messages postés409Date d'inscriptionjeudi 30 juin 2005StatutMembreDernière intervention21 novembre 20131 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