0

Я использую Lumia Imaging SDK 2.0 для этого приложения.Предварительный просмотр перед применением Фотофильтра C# wp8

В основном я создал прямоугольник для конкретного фильтра. Когда пользователь удаляет Rectangle, этот фильтр будет применен к нему.

Но моя проблема:: Когда пользователь удаляет другие фильтры, предыдущие фильтры не стираются. Я хочу убедиться, что фильтр будет применяться постоянно только тогда, когда пользователь дважды нажимает на Rectangle, но когда он делает однократные нажатия, эффект фильтра будет временно применен к фотографии для предварительного просмотра эффекта. Когда он выбирает другой фильтр, предыдущий фильтр стирается. Надеюсь, я ясно дал понять.

Вот код, что я делаю:

private async void RecAntiqueFilter_Tapped(object sender, DoubleTappedRoutedEventArgs e) 
    { 
     var imageStream = new BitmapImageSource(originalBitmap.AsBitmap()); 
     using (var effect = new FilterEffect(imageStream)) 
     { 
      var filter = new AntiqueFilter(); 
      effect.Filters = new[] { filter }; 

      // Render the image to a WriteableBitmap. 
      var renderer = new WriteableBitmapRenderer(effect, originalBitmap); 
      editedBitmap = await renderer.RenderAsync(); 
      editedBitmap.Invalidate(); 
     } 

     Image.Source = editedBitmap; 
    } 

И еще одна вещь, как будет я реализую отменить вариант фильтра?

ответ

0

Вы могли бы сделать что-то вроде этого:

IList<IFilter> filtersList = new List<IFilter>(); 
if (filterEffect != null) 
      { 
       filterEffect.Dispose(); 
       filterEffect = null; 
      } 

      filtersList.Remove(cartoonFilter); 
      filtersList.Clear(); 

      filtersList.Add(cartoonFilter); 

      writeableBitmapTarget = new WriteableBitmap(imageTarget, null); 

....... и использовать в качестве источника writeableBitmapTarget