2016-11-19 2 views
2

Я играю с новым выпуском SkiaSharp (1.55), который поддерживает загрузку SVG на Xamarin.Android (и не только). Из-за того, что он был выпущен менее 10 дней назад, я не мог найти столько документации.Как раскрасить черно-белый SVG, загруженный SkiaSharp?

После загрузки SVG в черно-белом режиме, я хотел бы его раскрасить (изменение цвета заполнения переднего плана от черного до любого цвета, который мне нужен). Это то, что я делаю.

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

Приведенный выше код отлично работает, но создается впечатление, что я не использую правильный фильтр.

  1. Есть ли какой-либо фильтр с функцией «раскрасить»?
  2. Как добиться того же для фоновых пикселей вместо этого?
  3. Любой простой способ инвертировать цвета?

Подробные пояснения приветствуются.

ответ

2

Я думаю, что цвет фильтр является правильным фильтром (так как вы меняете цвет), но вы также можете попробовать использовать режимы наложения вместо освещения:

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); 
} 

В результате режимов смешивания, вы может сделать так много, даже инвертируя цвета.