Intégration de .NET et polymorphisme

Posté par Gulix le 24/9/2008 11:55:20
Dans le cadre d'un de mes projets, j'utilise le composant .NET Zedgraph, qui permet de générer des graphes de toute sorte.

Quand j'ai développé mon projet, tout fonctionnait parfaitement. L'appel aux fonctions .NET fonctionne très bien, et je génère les graphes dans des PNG, que j'affiche ensuite dans des champs Image.

Lors du déploiement de l'application sur les postes des utilisateurs, une erreur survient constamment à la génération du graphe. Plus précisément lors de l'exécution de ce code :

oGraphe est un GraphPane dynamique
oBitmap est un Bitmap dynamique
oGraphics est un Graphics dynamique

oBitmap = new Bitmap(1, 1) // Exception lancée ici
oGraphics = Graphics::FromImage(oBitmap)
oGraphe:AxisChange(oGraphics)
oGraphe:GetImage():Save(sFichierImage, ImageFormat::Png)


Une exception .NET est lancée, indiquant qu'un élément de type System.Int32 ne peut être converti vers le type System.IO.Stream.

En gros, au lieu d'utiliser le constructeur Bitmap(Int32, Int32), c'est Bitmap(Stream) qui est appelé .

Le reste du code utilise également des fonctions possédant plusieurs appels différents, et tout fonctionne nickel, sauf ça.

Tous les postes ont les mêmes versions des frameworks. Et certains fonctionnent, d'autres noms. Que ce soit sous XP ou 2000.

J'ai réussi à m'en sortir en utilisant le code suivant pour créer mon instance de Graphics, mais si quelqu'un a une idée du pourquoi la première ne fonctionnait pas, ce serait cool. J'aime pas bloquer sur des trucs du genre.

oGraphe est un GraphPane dynamique
oImage est un Image dynamique
oGraphics est un Graphics dynamique

oImage = Image::FromFile(fRepExe() + "\blank.png")
oGraphics = Graphics::FromImage(oImage)
oGraphe:AxisChange(oGraphics)
oGraphe:GetImage():Save(sFichierImage, ImageFormat::Png)

Cette contribution était de : http://old.wdforge.org/newbb/viewtopic.php?forum=17&topic_id=6008&post_id=24179