Wie wird die Transparenzfarbe für die Ausgabe von RenderTargetBitmap festgelegt?

8

Ich versuche, ein Visual-Objekt, das einen transparenten Hintergrund hat, mithilfe von RenderTargetBitmap ... zu einem Bitmap zu speichern.

%Vor%

Es funktioniert, aber die transparenten Pixel werden mit schwarzer Farbe gerendert. Was ist der einfachste Weg, um diese transparenten Pixel in eine andere Farbe zu ändern?

    
Néstor Sánchez A. 28.03.2011, 20:38
quelle

2 Antworten

1

Wenn Sie das Bild als JPG speichern, wird Transparent schwarz angezeigt, da JPG den transparenten Kanal AFAIK nicht unterstützt. Mögliche Lösung: Speichern Sie als PNG oder malen Sie mit einer angemessenen Hintergrundfarbe.

    
Felice Pollano 28.03.2011, 20:54
quelle
1

Ich habe das nicht getestet, aber in der Theorie sollte es funktionieren.

  1. Verwenden Sie die CopyPixels () - Methode, um alle Pixeldaten aus Ihrer RenderTargetBitmap in ein Array zu extrahieren.

  2. Fragen Sie dann den Alpha-Kanal aller Pixel ab und geben Sie an, wo sie gleich 0x00 (vollständig transparent) sind, und stellen Sie die Farbe auf den Hintergrund ein, den Sie möchten. Wenn Sie eleganter sein möchten, müssen Sie die "Farbmathematik" verwenden, um die Farben in halbtransparenten Pixeln richtig einzustellen.

  3. Wenn Sie über ein angepasstes Pixelfeld verfügen, erstellen Sie abschließend eine neue BitmapSource.

  4. Um dies auf Festplatte zu speichern, müssen Sie wahrscheinlich ein Image im Speicher erstellen und seine Quelle auf Ihre neue Bitmap-Quelle setzen und Ihre RenderToBitmap erneut ausführen.

Ich hoffe, es hilft.

  

BEARBEITEN:   Nach dem Posten hatte ich   ein anderer Gedanke, der vielleicht einfacher ist.

     

Wenn Sie einen Klon oder Snapshot des   visuelles Element, das Sie zu speichern versuchen   und legen Sie es in ein neues In-Memory-Panel   (wie ein Raster oder eine Leinwand), Sie   könnte einfach den Hintergrund ändern   Das Panel soll die gewünschte Farbe haben.

     

Dann würden Sie das Panel als Ihr verwenden   Quelle für RenderTargetBitmap.

    
SergioL 28.03.2011 21:42
quelle

Tags und Links