Frage

Ich entwickle eine ASP.Net Web-Handler, dass die Renditen Bilder machen einen In-Memory-System.Windows.Forms.Control und exportiert dann die gerenderte Steuerung als Bitmap PNG komprimiert, wobei das Verfahren DrawToBitmap() verwenden. Die Klassen arbeiten nun voll, mit Ausnahme von einem Problem mit der Farbzuordnung. Mit dem Beispiel ist dies eine Lehre von den Web-Handler erzeugt wird.

Das Messgerät

Die Farben an den inneren Teilen des Sensors zugeordnet sind rot (#FF0000), Gelb (#FFFF00) und Grün (#00FF00), aber ich bekomme nur eine dumpf Version von jeder Farbe (#CB100F für Rot, #CCB70D für Gelb und #04D50D für grün ).

Der Hintergrund ist eine bmp-Datei mit dem Farbverlauf enthält. Der Farbverlust geschieht, ob der Hintergrund ein Gradient als die Probe ist, eine schwarze Leinwand, eine weiße Leinwand, eine transparente Leinwand, auch wenn es keinen Hintergrund-Set ist.

  • Mit schwarzem Hintergrund

Mit schwarzem Hintergrund ??

  • Mit transparentem Hintergrund

Mit einem transparenten Hintergrund ??

  • Mit einem weißen Hintergrund

Mit einem weißen Hintergrund ??

  • Ohne Hintergrund-Set

Ohne Hintergrund-Set

  • Mit Pixelformat in Format32bppArgb

Mit Pixelformat Format32bppArgb

Ich habe mehr Bitmap-Farbe deeps versuche, Ausgabeformate, Kompression, etc., aber keiner von ihnen scheint zu funktionieren. Irgendwelche Ideen?

Dies ist ein Auszug aus dem Quellcode:

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));
War es hilfreich?

Lösung 4

Leinwand war eine Klasse von einem Dritten zur Verfügung gestellt. Wir fanden ein Fehler in ihrem Paket, sie eine neue Version veröffentlicht, und das Problem wurde schließlich gelöst. Trotzdem danke für deine Zeit!

Andere Tipps

Wenn Sie die Farben malen, überprüfen Sie die Alpha-Kanal zu machen, ist richtig und eingestellt. Wenn Sie etwas Alpha haben es mit diesem dunklen Hintergrund mischen und Sie eine dunklere Farbe geben.

Haben Sie versucht, dies mit nur PNGs? Ich traf dieses Problem mit PNGs (oder JPEGS?) In einem Browser schon vor langer Zeit, aber IIRC GIFs beseitigte das Problem:

Hinweis, dass ich sage nicht, GIFs Ihr Problem auf lange falsch lösen, aber es kann Ihnen sagen, wenn die PNG-Schreib / Lese das Problem ist. Versuchen Sie es, versuchen BMP, versuchen, etwas. Glauben Sie nicht, das PNG. Sie könnten versuchen, die r g b-Werte in eine Protokolldatei (oder auf die Festplatte als roh und den Import in Photoshop und) sehen Dumping, was die Zahlen sind, bevor die Bitmap auszuschreiben. (Verwenden Sie LockBits ; es gibt Tutorien für Code auf Bytes in und aus Bitmaps bekommen).

Ich habe gerade realisiert, dass Sie wirklich leuchtend gelbe Teile auf diesem Dreieck Zeigern, so dass das Problem wahrscheinlich mit dem Hintergrundbild ist. Zeichnen Sie diese Bögen mit Primitiven oder ein Bitmap-Laden? Sie könnten Gamma Probleme werden mit Farbraumprobleme usw. je nach Eingabeformat, Sie unter der Annahme, für die rot / gelb / grün Meter Teil eines Bildes verwenden. Versuchen Sie, diese Formen in Code zeichnen, wenn Sie ein Bild verwenden. Was auch immer Code macht das gelbe Dreieck ist die hellen Farben bekommen, verwenden Sie so das gleiche Bildformat oder Pinsel oder was auch immer die gelbe Dreieck Arbeit macht.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top