0

我正在为此应用程序使用Lumia Imaging SDK 2.0。在应用照片滤镜之前预览c#wp8

基本上我为特定的过滤器创建了一个矩形。当用户点击矩形时,该过滤器将应用于它。

但我的问题是:当用户点击其他过滤器时,先前的过滤器不会磨损。我想确保过滤器只在用户双击矩形时永久应用,但当他单击时,滤镜效果将暂时应用于照片以预览效果。当他选择其他过滤器时,先前的过滤器会磨损。我希望我明确自己。

下面是我在做什么的代码:

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源