2017-06-29 1 views
1

Je suis en train d'effacer une image bitmap dans SkiaSharp dans Xamarin, le bitmap est tirée par un SkCanvas,Comment réinitialiser Bitmap pixels SKBitmap SKiaSharp

new SKCanvas(SkBitmap bitmap) 

mais parfois j'ai besoin pour effacer les données bitmap.

SkCanvas.Clear() 

tente de remplir le bitmap avec des pixels SKColor (0,0,0,0), mais premul avec les pixels existants, il ne l'affecte pas.

SKBitmap.Reset() 

ne fonctionne pas car il réinitialise complètement l'objet, y compris la taille. Toute idée comment puis-je y parvenir de manière efficace, pas en passant par tous les pixels?

Répondre

1

Si vous essayez d'effacer les données de pixels, vous devrez effacer chaque pixel. Il n'y a pas moyen de contourner cela.

Pour effacer le bitmap/canvas, vous devez utiliser SKCanvas.Clear(), mais n'oubliez pas que vous pouvez transmettre une couleur. Donc, si vous voulez que les données de pixels soient toutes des zéros, vous pouvez simplement SKCanvas.Clear(0).

Je pense que c'est ce que vous demandez, sinon je pourrais avoir besoin de plus d'informations.

EDIT

Une autre chose qui vient de se produire est qu'il ya un SKBitmap.Erase(SKColor). Cela peut être mieux car il n'y a pas besoin d'une toile.