none
Problème d'impression : tentative de lecture ou d'écriture de mémoire protégée RRS feed

  • Question

  • Bonjour,

    j'espère que quelqu'un pourra m'aider. J'essaie de faire l'impression d'une image en faisant un DrawImage() et un FilleRectangle. Ce dernier a de la transparence. Ça me donne une erreur de lecture ou d'écriture de mémoire protégée à l'impression.

    Voici du code simplifié qui reproduit l'erreur:


    private void PrintImage()
    {
       try
       {
          printDocument1.DocumentName = "Test";
          printDocument1.PrintPage += new PrintPageEventHandler(printDocument1_PrintPage);
          printDocument1.Print();
       }
       catch (Exception e)
       {
          //Erreur de tentative de lecture ou d'écriture de mémoire protégée
       }
    }

    private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
    {
       if (!e.Cancel)
       {
          Image imageImpression = Bitmap.FromFile("d:\\temp\\img.gif");   //IMPRESSION 1
          //Image imageImpression = new Bitmap(1096, 2200);                 //IMPRESSION 2
          e.Graphics.DrawImage(imageImpression, 0, 0, 800, 1000);
         
          //Surlignement
          SolidBrush b = new SolidBrush(Color.FromArgb(110, Color.Yellow));  //BRUSH 1
          //SolidBrush b = new SolidBrush(Color.Yellow);                                    //BRUSH 2
          e.Graphics.FillRectangle(b, 50, 50, 100, 100);
         
          e.HasMorePages = false;
       }
       else
          e.Cancel = true;
    }

    Si j'appelle la fonction PrintImage() ça cause l'errreur.

    Si je mets en commentaire la ligne IMPRESSION 1 et que je remets la ligne IMPRESSION 2
    OU
    si je mets en commentaire la ligne BRUSH 1 et que je remets la ligne BRUSH 2
    =
     l'impression fonctionne


    Merci de votre aide.

    Guill

    vendredi 20 mars 2009 13:46

Réponses

Toutes les réponses

  • bonjour,
    as-tu les droits de lecture/écriture sur le dossier temp ?
    mercredi 25 mars 2009 11:08
  • Salut!
    Déjà tu devrais pourvoir utiliser les Brushes (au lieu des solidBrush) :

    e.Graphics.FillRectangle(Brushes.Yellow, 50, 50, 100, 100);  

    Ensuite je ne savais pas qu'on pouvait charger du .gif avec Bitmap ^^ merci pour l'info ;)

    J'ai déjà fait des Impressions en C#, mais j'ai pas de méthode "Print()". J'utilise soit :
    PrintDocument(...) : pour tout.
    PrintVisual(...) : pour faire des impressions de composants graphiques.

    Donc je me demande si tu serais pas en winform du coup? o_O





    The Whathappen man!?
    vendredi 27 mars 2009 09:43
  • Finalement c'est ok. C'était l'imprimante que j'utilisais (HP LaserJet 1020). J'ai essayé avec 3 autres imprimantes et tout fonctionne.

    Merci

    mardi 7 avril 2009 17:27