2010-04-27 3 views
2

J'utilise une application Web sous IIS que nous dessinons avec des graphiques qui sont envoyés aux clients. Nous fonctionnions auparavant sous iis6, alors que migrant vers 2008 (iis7) nous avons rencontré des problèmes très étranges avec le graphique. J'ai trébuché sur les documents msdn pour GDI + indiquant que "les fonctions et les classes GDI + ne sont pas prises en charge pour une utilisation dans un service Windows." Je soupçonne que mes problèmes sont probablement liés à l'isolement des services supplémentaires http://msdn.microsoft.com/en-us/library/ms533798%28VS.85%29.aspxDessiner avec GDI + sous IIS

Ma question est de savoir comment diable sommes-nous censés dessiner des graphiques? GDI brut? OpenGL - mais cela ne nécessite-t-il pas encore un DC?

Répondre

0

j'avais posé une question similaire:

Why not use GDI+ from ASP.NET

J'ai fini par passer aux bibliothèques LEADTOOLS.

Bien sûr, vous pouvez choisir n'importe quelle bibliothèque qui ne dépend pas de l'appareil. GDI + dépend d'un contexte de périphérique qui lui donne un périphérique physique sur lequel baser ses graphiques. Cependant, lors de l'exécution en tant que service, la carte graphique n'est probablement pas disponible pour une utilisation comme dans un environnement de bureau.

Vous pouvez également écrire vos propres routines graphiques qui dessinent un bitmap. Un bitmap est simplement de la mémoire brute disposée dans un certain format.

+0

Je vais regarder dans les bibliothèques LEADTOOLS. Vraiment je suppose que ce dont j'ai besoin est une bibliothèque pour accomplir le dessin graphique d'une manière indépendante de l'appareil. – Zac

+0

Nous avons une ancienne version de leurs bibliothèques - cela a peut-être changé depuis la version que nous avons. J'ai jeté le dll dans la dépendance walker et il est très dépendant de GDI. – Zac

+0

Essayez la version 15+. Dépend aussi de ce que vous faites avec leurs bibliothèques. Il y a la possibilité d'interopérer entre GDI + et Leadtools. Ce que j'ai fait était de faire un serveur hors processus (juste engendré un .exe séparé qui a utilisé Leadtools pour faire les graphiques) puis lire le fichier jpeg résultant à partir de l'application asp.net. –

0

Pas 100% sur votre situation particulière étant donné les détails; mais pourquoi ne pas effectuer votre rendu graphique avec une simple application asp.net? Vous pouvez utiliser l'espace de noms System.Drawing qui enveloppe GDI +

Si vous avez juste besoin de fonctionnalité pour barebones rendu graphique et la livraison aux clients sur HTTP, vous pouvez également utiliser un HTTPHandler

+0

Notre dessin est effectué dans des bibliothèques C++ natives. Et comme vous l'avez souligné Sysem.Drawing utilise GDI + sous le capot - contre les recommandations MSDN. – Zac