Domanda

sto sviluppando un gestore web ASP.Net che restituisce immagini facendo un System.Windows.Forms.Control in-memory e quindi esporta il controllo reso come bitmap compressa in PNG, utilizzando il metodo DrawToBitmap(). Le classi sono completamente funzionante ormai, tranne per un problema con l'assegnazione dei colori. Con l'esempio, questo è un indicatore generato dal gestore web.

L

I colori assegnati alle parti interne del calibro sono rossi (#FF0000), giallo (#FFFF00) e verde (#00FF00), ma ho solo una versione ottusamente di ogni colore (#CB100F per il rosso, #CCB70D per il giallo e #04D50D per il verde ).

Lo sfondo è un file BMP che contiene la sfumatura di colore. La perdita di colore avviene se lo sfondo è un gradiente come campione, una tela nera, una tela bianca, una tela trasparente, anche quando non v'è un insieme di sfondo.

  • Con sfondo nero

con sfondo nero

  • con sfondo trasparente

Con uno sfondo trasparente

  • Con uno sfondo bianco

Con uno sfondo bianco

  • Senza un insieme di sfondo

Senza una serie di sfondo

  • Con il formato di pixel in Format32bppArgb

Con PixelFormat Format32bppArgb

Ho provato più profondità bitmap a colori, formati di output, il livello di compressione, ecc, ma nessuno di loro sembra funzionare. Tutte le idee?

Questo è un estratto del codice sorgente:

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));
È stato utile?

Soluzione 4

Canvas era una classe fornito da una terza parte. Abbiamo trovato un bug nel loro pacchetto, che ha rilasciato una nuova versione, e il problema è stato finalmente risolto. Grazie comunque per il vostro tempo!

Altri suggerimenti

Quando si disegna i colori, verificare che il canale alfa è impostato correttamente pure. Se avete qualche alfa che si fondono con quello sfondo scuro e dare un colore più scuro.

Hai provato questo con solo PNG? Mi ha colpito questo problema con PNG o JPEG (?) In un browser molto tempo fa, ma IIRC GIF eliminato il problema:

Si noti che non sto dicendo GIF risolverà il vostro problema a lungo sbagliato ma può dire se il PNG di scrittura / lettura è il problema. Provate, provate BMP, provare qualcosa. Non credo che il PNG. Si potrebbe provare il dumping i r g valori di b ad un file di log (o su disco come prima e l'importazione in Photoshop e) vedere quello che i numeri sono prima di scrivere il bitmap. (Usa LockBits , ci sono tutorial per codice su come ottenere byte dentro e fuori di bitmap).

Ho appena capito che avete parti gialle davvero brillante su quel puntatore triangolo, quindi il problema è probabile che l'immagine di sfondo. Stai disegnando quei archi con primitive o il caricamento di una bitmap? Si potrebbe essere avere problemi di gamma, problemi di spazio colore, ecc a seconda del formato di input, supponendo che si sta utilizzando un'immagine per la parte misuratore di rosso / giallo / verde. Prova a disegnare quelle forme nel codice se si utilizza un'immagine. Qualunque sia il codice rende il triangolo giallo sta ottenendo i colori vivaci, in modo da utilizzare lo stesso formato di immagine o pennello o qualsiasi altra cosa rende il lavoro triangolo giallo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top