2014-10-08 33 views
0

我已經寫了代碼8.1應用程序來裁剪圖片,並使用教程添加橢圓的圖像,並將其保存在Windows 8.1 APP

http://code.msdn.microsoft.com/windowsapps/CSWin8AppCropBitmap-52fa1ad7

保存它現在我想編輯圖片在圖片上添加橢圓等形狀。對於我創建了一個橢圓

var Circle = new Ellipse 
{ 
     Height = 50, 
     Width = 50, 
     Fill = brush, 
     RenderTransform = new CompositeTransform(), 

}; 

,並在其中包含從計算機加載我上面的圖片畫布添加:

imageCanvas.Children.Add(Circle); 

我可以看到橢圓形裝在我的原圖大小,但保存時,只我的原始圖片被保存(不是橢圓形)。我想編輯將橢圓嵌入到原始圖片中的圖片。我該怎麼做?

回答

2

我想你是保存圖像,這就是爲什麼只有圖像被保存,而不是圖像上的圓圈。爲了保存編輯圖像的圓形,你需要保存CANVAS的兒童

假設你非常熟悉IRandomAccesStream和編碼器類,我在這裏給我的代碼,我有時使用回100%。在代碼中,我還提供了FileSavePicker的功能,用戶通過該功能將圖片保存在其所需的位置。在這裏,可以是帆布的名稱

private async void save_Click(object sender, RoutedEventArgs e) 
    { 

     if (can != null) 
     { 
      RenderTargetBitmap renderTargetBitmap = new RenderTargetBitmap(); 
      await renderTargetBitmap.RenderAsync(can); 


      FileSavePicker picker = new FileSavePicker(); 

      picker.FileTypeChoices.Add("PNG Image",new string[]{".png"}); 
      StorageFile file = await picker.PickSaveFileAsync(); 
      if (file != null) 
      { 
       var pixels = await renderTargetBitmap.GetPixelsAsync(); 

       using (IRandomAccessStream stream = await file.OpenAsync(FileAccessMode.ReadWrite)) 
       { 
       var encoder = await BitmapEncoder.CreateAsync(BitmapEncoder.PngEncoderId, stream); 
        byte[] bytes = pixels.ToArray(); 
        encoder.SetPixelData(BitmapPixelFormat.Bgra8, BitmapAlphaMode.Ignore, (uint)can.Width, (uint)can.Height, 96, 96, bytes); 
        await encoder.FlushAsync(); 
       } 
      } 
      } 
    }