OnIsColorInvertedChanged
public List<IFilter> filters = new List<IFilter>();
public GrayscaleFilter grayFilter = new GrayscaleFilter();
public AutoLevelsFilter autoLevelsFilter = new AutoLevelsFilter();
public NegativeFilter negativeFilter = new NegativeFilter();
...
protected override async void OnIsColorInvertedChanged(bool newValue,bool oldValue)
{
if (newValue)
{
this.IsGreyscale = false;
this.IsColorFixed = false;
this.ResetWorkingBitmap();
filters.Add(negativeFilter);
this.ModifiedImage = await NokiaRenderer.Render(this.workingBitmap, filters);
}
else
{
this.ResetWorkingBitmap();
filters.Clear();
this.ModifiedImage = this.workingBitmap;
}
}
...
public static class NokiaRenderer
{
public async static Task<WriteableBitmap> Render(WriteableBitmap actualImage, List<IFilter> filters)
{
var bitmap = actualImage.AsBitmap();
BitmapImageSource bitmapSource = newBitmapImageSource(bitmap);
FilterEffect effects = new FilterEffect(bitmapSource);
effects.Filters = filters;
WriteableBitmapRenderer renderer = newWriteableBitmapRenderer(effects, actualImage);
return await renderer.RenderAsync();
}
}