begin process at 2012 02 17 06:15:54
  Trouver un code source :
 
dans
 
Accueil > Forum > 

VB.NET et VB 2005

 > 

Divers

 > 

Débutants

 > 

Une erreur générique s'est produite dans GDI+.


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Une erreur générique s'est produite dans GDI+.

mardi 27 février 2007 à 23:43:12 | Une erreur générique s'est produite dans GDI+.

alex1496

Mon programme calcule le ferraillage d'un poteau béton. L'utilisateur entre les données, et lance le calcul qui aboutit sur le dessin du poteau et une note de calcul que je genère en HTML.

L'image est enregistrée sur mon disque et est affichée dans une picturebox et dans la note de calcul en HTML.

Tout cela marche mais si je relance le calcul ça plante avec mon erreur de GDI+.

Je n'arrive pas à comprendre si c'est parce que l'image est utilisé que je n'arrive pas à l'afficcher de nouveau.


MON CODE


Private Sub menu_Calculer(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles barre_calculer.Click, mnu_calculer.Click

        ...blablablabla....

        
        '--- Affichage dessin ---
        'Image de support
        'pic.Dispose()
        Dim img As Bitmap = New Bitmap(pic.Width, pic.Height)
        'Dim img As New Bitmap(file_img_p)
        'frm_note.Close()
        'pic.Image = Nothing
        'Paramètres de transformation
        Dim ajust As ajustage = Ajuste_section(section, pic)
        'Trace
        Call Trace_section(section, img, ajust)
        Call Trace_section(section_Br, img, ajust)
        'Affichage sur la picturebox

        Try
            Image.FromFile(file_img_p).Dispose()
            img.Save(file_img_p, ImageFormat.Gif)
            pic.Image = Image.FromFile(file_img_p)
        Catch ex As Exception
            Console.WriteLine(">>>" & ex.Message)
        End Try
        


        '--- Note de calculs ---
        'Call ndc_poteau(p, geom_p, soll_p, meca_p, arm_p)
        'Call menu_ndc(sender, e)


        'img.Dispose()

    End Sub

MODULE DESSIN


Public Sub Trace_section(ByRef tableau() As PointF, ByVal img As Bitmap, ByVal ajust As ajustage)
        'Trace une image à partir d'un tableau

        Dim tableau_trace() As PointF
        tableau_trace = tableau.Clone

        'Tableau affichage
        For i As Integer = 0 To tableau_trace.GetUpperBound(0)
            tableau_trace(i).X = tableau(i).X * ajust.echelle.dx + ajust.vecteur.dx
            tableau_trace(i).Y = tableau(i).Y * ajust.echelle.dy + ajust.vecteur.dy
        Next i

        'Créer une image en fonction de la picturebox
        Dim graph As Graphics = Graphics.FromImage(img)
        'graph.FromImage(img)
        'Dessin
        graph.FillRectangle(Brushes.White, New Rectangle(0, 0, img.Width, img.Height))
        graph.DrawPolygon(Pens.Red, tableau_trace)


        'Dim img1 As Image = New Bitmap(img.Width, img.Height, graph)
        'img1.Save("c:\essai.bmp") ', ImageFormat.Bmp)

        graph.Dispose()

    End Sub
mardi 27 février 2007 à 23:45:29 | Re : Une erreur générique s'est produite dans GDI+.

alex1496

C'est ce que j'ai reussi à recupérer de l'erreur :

L'exception System.Runtime.InteropServices.ExternalException n'a pas été gérée
  ErrorCode=-2147467259
  Message="Une erreur générique s'est produite dans GDI+."
  Source="System.Drawing"
  StackTrace:
       à System.Drawing.Image.Save(String filename, ImageCodecInfo encoder, EncoderParameters encoderParams)
       à System.Drawing.Image.Save(String filename, ImageFormat format)
       à WindowsApplication1.frm_poteau.menu_Calculer(Object sender, EventArgs e) dans N:\PROG_VB2005\CABA\frm_poteau.vb:ligne 235
       à System.Windows.Forms.ToolStripItem.RaiseEvent(Object key, EventArgs e)
       à System.Windows.Forms.ToolStripButton.OnClick(EventArgs e)
       à System.Windows.Forms.ToolStripItem.HandleClick(EventArgs e)
       à System.Windows.Forms.ToolStripItem.HandleMouseUp(MouseEventArgs e)
       à System.Windows.Forms.ToolStripItem.FireEventInteractive(EventArgs e, ToolStripItemEventType met)
       à System.Windows.Forms.ToolStripItem.FireEvent(EventArgs e, ToolStripItemEventType met)
       à System.Windows.Forms.ToolStrip.OnMouseUp(MouseEventArgs mea)
       à System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
       à System.Windows.Forms.Control.WndProc(Message& m)
       à System.Windows.Forms.ScrollableControl.WndProc(Message& m)
       à System.Windows.Forms.ToolStrip.WndProc(Message& m)
       à System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
       à System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
       à System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
       à System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
       à System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(Int32 dwComponentID, Int32 reason, Int32 pvLoopData)
       à System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
       à System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
       à System.Windows.Forms.Application.Run(ApplicationContext context)
       à Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.OnRun()
       à Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.DoApplicationModel()
       à Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.Run(String[] commandLine)
       à WindowsApplication1.My.MyApplication.Main(String[] Args) dans 17d14f5c-a337-4978-8281-53493378c1071.vb:ligne 81
       à System.AppDomain.nExecuteAssembly(Assembly assembly, String[] args)
       à System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
       à Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
       à System.Threading.ThreadHelper.ThreadStart_Context(Object state)
       à System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
       à System.Threading.ThreadHelper.ThreadStart()

Moi j'y comprends rien

Si vous avez besoin de plus d'info, pas de souci

Dur d'etre pour moi d'être novice !
mercredi 28 février 2007 à 22:14:29 | Re : Une erreur générique s'est produite dans GDI+.

ShareVB

salut,

apparemment MS a encore sorti quelquechose avant de l'avoir finalisé :
http://www.gotdotnet.com/Community/MessageBoard/Thread.aspx?id=385983

sinon essaie en JPEG...visiblement les implémentation de l'enregistrement sont un peu buggées...

ShareVB
jeudi 1 mars 2007 à 00:43:08 | Re : Une erreur générique s'est produite dans GDI+.

alex1496

Réponse acceptée !
J'ai trouvé la solution mais pas la réponse.

Code :

Sub principal ()_click

blabla...

        '--- Affichage dessin ---
     
        Dim img As Bitmap = New Bitmap(pic.Width, pic.Height)
        Dim graph As Graphics = Graphics.FromImage(img)

        'Paramètres de transformation
        Dim ajust As ajustage = Ajuste_section(section, pic)

        'Trace
        graph.FillRectangle(Brushes.White, New Rectangle(0, 0, img.Width, img.Height))
        Call Trace_section(section, img, graph, ajust)
        Call Trace_section(section_Br, img, graph, ajust)

        'Affichage sur la picturebox
        img.Save(file_img_p, ImageFormat.Bmp)
        pic.Image = img

        graph.Dispose()

end sub

   Public Sub Trace_section(ByRef tableau() As PointF, ByVal img As Bitmap, ByVal graph As Graphics, ByVal ajust As ajustage)
        'Trace une image à partir d'un tableau

        Dim tableau_trace() As PointF
        tableau_trace = tableau.Clone

        'Tableau affichage
        For i As Integer = 0 To tableau_trace.GetUpperBound(0)
            tableau_trace(i).X = tableau(i).X * ajust.echelle.dx + ajust.vecteur.dx
            tableau_trace(i).Y = tableau(i).Y * ajust.echelle.dy + ajust.vecteur.dy
        Next i

        graph.DrawPolygon(Pens.Red, tableau_trace)

    End Sub


jeudi 1 mars 2007 à 09:27:13 | Re : Une erreur générique s'est produite dans GDI+.

ShareVB

salut,

j'ai l'impression que le Gif de .Net a une taille limite...par contre en JPEG, ca doit aussi marcher...

ShareVB
jeudi 1 mars 2007 à 20:59:43 | Re : Une erreur générique s'est produite dans GDI+.

alex1496

J'en sais trop rien. J'en ai perdu mon latin.
Mais la ca marche.
Si quelqu'un a l'explication, qu'il se manifeste.
jeudi 1 mars 2007 à 23:31:06 | Re : Une erreur générique s'est produite dans GDI+.

Lucyberad

Membre Club
la tu utilise le BMP, c'est vachement lourd comme fichier.

si la taille ne t'importe pas et que tu a plutot besoin de vitesse de traitement, ok pour le BMP, sinon pour alleger les images: utilise le Jpeg.


comme je te l'ai repondu a ton MP, la premiere ligne:
            Image.FromFile(file_img_p).Dispose()
ne sert a rien.

ensuite je crois savoir pourquoi: probablement que la methode Save fait un travail asynchrone, et que la deuxieme essaye de charger un fichier en cours d'edition... peut-être, en tout cas à essayer !
            img.Save(file_img_p, ImageFormat.Bmp)
            pic.Image = Image.FromFile(file_img_p)



L U C Y I3 E R @ D


Cette discussion est classée dans : image, tableau, img, trace, ajust


Répondre à ce message

Sujets en rapport avec ce message

Affichage image dans picturebox [ par alex1496 ] Je rencontre des difficulté à afficher une image dans une picturebox.En fait, mon programme réalise des calculs et dessine une image. Cette image doit comment envoyer un objet [ par OzZArgaoussama ] Mon probleme est comment envoyer un objet qque (specialement Image) en VB.Net en reseau : c.a.d: coté serveur : dim img as Image .. . envo Image en tableau d'octet [ par M51 ] Salut,j'ai une image (classe image) que je souhaite enregistrer dans un fichier binaire (qui contriendra d'autres infos que mon image). Pour cela je s VB.NET MDI BACKGROUND IMAGE [ par kevin_prec ] Bonjour a tous Je suis au prise avec un problème je suis débutant et j'essaie à l'aided'un open file dialog de permettre a l'utilisateur d'Aller cherc Une erreur générique s'est produite dans GDI+. [ par Lucyberad ] Bonjour,Je poste ce message car j'ai un petit problèmeje souhaite inclure des images dans un fichier XMLj'ai donc découvert ce code:    Public Functio Charge une image dans une table [ par pirate75000 ] Bonjour, je n'ais pas trouver comment faire pour charger une image dans un tableau de pixel, pour afficher ce tableau dans un picturbox aprés un trait Mettre une image de fond dans un tableau [ par malhivertman1 ] Bonjour, J'aimerais mettre une image de fond dans un tableau que je créer. Je sais qu'il faut utiliser la propriété backimageurl mais quand je fais   images en rafale [ par taj88 ] Bonjour, (c'est encore moi qui viens vous embeter avec ma webcam désoslé) petit rappel: le composant WIA permet d'enregistrer une image provenant d' Transparence d'image ColorMatrix [ par renocmoa ] bonjour,j'utilise les fonction suivantes pour tenter d'optenir une imege semi-transparente,... sans résultat quelqu'un a une idée...?merciPublic</f Rotation image picturebox...galère allemande [ par noelaurent ] Bonjour a tous ! Je suis confronté à un problème de rigolo (pour vous les avertis), mais que je n´arrive pas à résoudre...je dois afficher une image


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,248 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales