Question

Je développe un gestionnaire Web ASP.Net que les images retours faisant un System.Windows.Forms.Control en mémoire, puis exporte le contrôle rendu sous forme de bitmap compressés en PNG, en utilisant la méthode DrawToBitmap(). Les classes travaillent maintenant pleinement, à l'exception d'un problème avec l'attribution des couleurs. Par exemple, ceci est une jauge générée par le gestionnaire Web.

La jauge

Les couleurs attribuées aux parties intérieures de la jauge sont rouges (#FF0000), jaune (#FFFF00) et vert (#00FF00) mais je ne reçois que une version sourdement de chaque couleur (#CB100F pour le rouge, #CCB70D pour le jaune et #04D50D pour le vert ).

L'arrière-plan est un fichier BMP contenant le gradient de couleur. La perte de couleur se produit si l'arrière-plan est un gradient que l'échantillon, une toile noire, une toile blanche, une toile transparente, même quand il n'y a pas un ensemble de fond.

  • Avec fond noir

Avec fond noir

  • Avec fond transparent

avec un fond transparent

  • Avec un fond blanc

Avec un fond blanc

  • Sans un ensemble de fond

Sans un ensemble d

  • Avec le format de pixel dans Format32bppArgb

Avec pixelformat Format32bppArgb

J'ai essayé plusieurs couleurs deeps bitmap, les formats de sortie, niveau de compression, etc., mais aucun d'entre eux ne semble fonctionner. Toutes les idées?

Ceci est un extrait du code source:

Bitmap bmp = new Bitmap(w, h, System.Drawing.Imaging.PixelFormat.Format32bppPArgb);
Image bgimage = (Image) HttpContext.GetGlobalResourceObject("GraphicResources", "GaugeBackgroundImage");
Canvas control_canvas = new Canvas(); //inherits from Control
....
//the routine that makes the gauge
....
control_canvas.DrawToBitmap(bmp, new Rectangle(0, 0, w, h));
Était-ce utile?

La solution 4

Toile était une classe fournie par un tiers. Nous avons trouvé un bug dans leur emballage, ils ont sorti une nouvelle version, et le problème a finalement été résolu. Merci quand même pour votre temps!

Autres conseils

Lorsque vous peignez les couleurs, assurez-vous que le canal alpha est correctement réglée ainsi. Si vous avez une certaine alpha, il se mélange avec ce fond sombre et vous donner une couleur plus foncée.

Avez-vous essayé cela avec seulement PNGs? J'ai frappé ce problème avec PNGs (ou JPEGS?) Dans un navigateur il y a longtemps, mais IIRC GIFs éliminé le problème:

Notez que je ne dis pas que GIFs résoudra votre problème à long tort, mais il peut vous dire si l'écriture PNG / lecture est le problème. Essayez, essayez BMP, essayer quelque chose. Ne croyez pas le PNG. Vous pouvez essayer de mettre les valeurs r g b dans un fichier journal (ou sur le disque comme matières premières et l'importation dans Photoshop et) voir quels sont les chiffres avant d'écrire le bitmap. (Utilisez LockBits , il y a des tutoriels pour le code sur l'obtention d'octets dans et hors de bitmaps).

Je viens de réaliser que vous avez vraiment lumineux pièces jaunes sur ce pointeur triangle, de sorte que le problème est probablement avec l'image d'arrière-plan. Dessines-tu ces arcs avec des primitives ou le chargement d'un bitmap? Vous pourriez avoir des problèmes gamma, les problèmes d'espace de couleurs, etc. en fonction du format d'entrée, en supposant que vous utilisez une image pour la partie mètres rouge / jaune / vert. Essayez de dessiner ces formes dans le code si vous utilisez une image. Quel que soit le code rend le triangle jaune obtient les couleurs vives, donc utiliser le même format d'image ou d'un pinceau ou tout ce qui fait le travail triangle jaune.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top