Bonjour

j'ai un projet VB 2005 qui imprime des images en pleine page.

Pour que l'image soit imprimée sur toute la page, celui-ci effectue une rotation ou non de l'image, à l'aide de RotateFlip.

Ca fonctionne bien, sauf que j'ai un petit souci de conso mémoire :
Lorsque j'imprime une image SANS la retourner, la conso de mon appli augmente d'environ 1.5Mo. Le job dans la file d'impression Windows fait a peu près 1.5Mo aussi.

Par contre, lorsque j'imprime une image AVEC une rotation, la conso de l'appli augmente de 25-30Mo, et le job dans la file d'impression pèse 28Mo.

Bien entendu, je fais bien un "dispose" de mon image pour libérer les ressources dans mon appli, mais coté file d'impression, si j'imprime 10 pages d'affilée, je me retrouve avec un job de 280Mo, alors imaginez un job de 100 pages (ce qui est fréquent pour mon application...)

Auriez vous une idée ??

PS : le bout de code qui imprime :
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
 
        Dim MonImage As Bitmap
        Dim ratio, ratiopapier As Double
        Dim RectSortie As Rectangle
 
        MonImage = New Bitmap(CurrentPrintedImage.NomFichier)
 
        ratiopapier = e.MarginBounds.Height / e.MarginBounds.Width
 
        If (MonImage.Width > MonImage.Height And ratiopapier > 1) Or (MonImage.Width < MonImage.Height And ratiopapier < 1) Then
            MonImage.RotateFlip(RotateFlipType.Rotate90FlipNone)
        End If
 
        ratio = MonImage.Height / MonImage.Width
 
        RectSortie = New Rectangle(0, 0, e.MarginBounds.Width, e.MarginBounds.Width * ratio)
        e.Graphics.DrawImage(MonImage, RectSortie)
 
        MonImage.Dispose()