如何将捕获的图像传递到画布?

时间:2014-01-22 21:43:33

标签: windows-phone-7 canvas image-capture

我有一个使用设备相机拍摄图像的课程。我的目标是将捕获的图像传递到另一个布局上的画布。

然后将这个布局与输入到文本框中的注释一起保存。我已经找到了如何保存注释和标题并允许它被打开但是我不知道如何传递捕获的图像布局并将其与笔记一起保存。

有没有人对我如何做到这一点有任何建议或指示?

目前这是我在保存后尝试将图像文件读回布局的方式,但我不确定如何将文件读入画布,所以显然这个解决方案还没有工作:

if (NavigationContext.QueryString.ContainsKey("note")) 
            { 
                string s2 = ".jpg";

                string filename = this.NavigationContext.QueryString["note"]; 
                if (!string.IsNullOrEmpty(filename)) {
                    using (var store = System.IO.IsolatedStorage.IsolatedStorageFile .GetUserStoreForApplication()) 
                    using (var stream = new IsolatedStorageFileStream(filename, FileMode.Open, FileAccess.ReadWrite, store))


                    /*
                    if(filename.Contains(s2))
                    {
                        StreamReader reader = new StreamReader(stream);
                        this.capturedNoteCanvas = reader.ReadToEnd();
                        this.noteNameTb.Text = filename; reader.Close();
                    }
                    else
                     */
                    { 
                        StreamReader reader = new StreamReader(stream); 
                        this.noteDataTb.Text = reader.ReadToEnd(); 
                        this.noteNameTb.Text = filename; reader.Close(); 
                    }
                }
            } 

我在想的是这样的:

Proposed UI

1 个答案:

答案 0 :(得分:1)

使用CameraCaptureTask和Bitmaps

//从cameracapturetask获取writableBitmap对象

void cameracapturetask_Completed(object sender, PhotoResult e)
        {
            try
            {
                if (e.TaskResult == TaskResult.OK)
                {
                    BitmapImage bmp = new BitmapImage();
                    bmp.SetSource(e.ChosenPhoto);
                    WritableBitmap wb=new WritableBitmap (bmp.PixelWidth,bmp.PixelHeight);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

在存储中保存wb

                            using (MemoryStream stream = new MemoryStream())
                            {
                                wb.SaveJpeg(stream, (int)bmp.PixelWidth, (int)bmp.PixelHeight, 0, 100);
                                using (IsolatedStorageFileStream local = new IsolatedStorageFileStream(App.PageName, FileMode.Create, mystorage))
                                {
                                    local.Write(stream.GetBuffer(), 0, stream.GetBuffer().Length);
                                }
                            }

//从画布中获取WritableBitmap

如果您的画布包含图像,并且它还包含一些高度和宽度属性的画布,那么

WritableBitmap wb= new WritableBitmap(canvascontrol,null);

获取画布并将其保存在writablebitmap对象中,然后该对象可用于进一步的图像处理。