2016-11-19 1 views
2

Je joue avec la nouvelle version de SkiaSharp (1.55) qui supporte le chargement de SVG sur Xamarin.Android (et pas seulement). En raison du fait qu'il a été publié il y a moins de 10 jours, je n'ai pas trouvé autant de documentation. Après avoir chargé un SVG en noir et blanc, je voudrais le coloriser (changer la couleur de remplissage de premier plan du noir à la couleur dont j'ai besoin). C'est ce que je fais.Comment coloriser le SVG en noir et blanc chargé avec SkiaSharp?

using (var paint = new SKPaint()) 
{ 
    paint.ColorFilter = SKColorFilter.CreateLighting(SKColors.White, SKColor.Parse("#FF0000")); 
} 

Le code ci-dessus fonctionne bien, mais j'ai l'impression que je n'utilise pas le bon filtre.

  1. Existe-t-il un filtre avec une sorte de fonction de "colorisation"?
  2. Comment faire la même chose pour les pixels de fond à la place?
  3. Un moyen facile d'inverser les couleurs?

Les explications détaillées sont les bienvenues.

Répondre

2

Je pense que le filtre de couleur est le filtre correct (puisque vous changez les couleurs), mais vous pouvez également essayer d'utiliser les modes de fusion au lieu d'éclairage:

using (var paint = new SKPaint()) { 
    paint.ColorFilter = SKColorFilter.CreateBlendMode(
     SKColors.Red,  // the color, also `(SKColor)0xFFFF0000` is valid 
     SKBlendMode.SrcIn); // use the source color 

    canvas.DrawPicture(svgPicture, paint); 
} 

En conséquence des modes de fusion, vous peut faire beaucoup de cela, même en inversant les couleurs.