使用WriteableBitmap图像将媒体库中的图像加载到画布上?

时间:2013-06-06 09:29:39

标签: c# windows-phone-7 xaml c#-4.0 windows-phone-8

我正在尝试加载从Windows手机媒体库中选择的图片,我已经完成了选择所需的图片,我无法使用此代码将图片加载到我的画布命名区域:

void photochoosertask_Completed(object sender, PhotoResult e)
{
    if (e.TaskResult == TaskResult.OK)
    {
        WriteableBitmap bitMap = new WriteableBitmap(200,200);
        Extensions.LoadJpeg(bitMap, e.ChosenPhoto);
        Canvas.SetLeft(area, 10);
        Canvas.SetTop(area, 10);
        bitMap.Render(area, null);
        bitMap.Invalidate();
    }
}

但是我无法处理这段代码......有什么建议.. ?? 或者如何完成这项任务?这是正确的方法吗?

由于

2 个答案:

答案 0 :(得分:0)

要在Canvas中显示位图,您必须向Children集合添加Image控件,该集合使用位图作为其Source

var bitmap = new WriteableBitmap(200, 200);
Extensions.LoadJpeg(bitmap, e.ChosenPhoto);

var image = new Image();
image.Source = bitmap;

Canvas.SetLeft(image, 10);
Canvas.SetTop(image, 10);
area.Children.Add(image);

由于e.ChosenPhoto是一个流,您可能也可以使用BitmapImage而不是WriteableBitmap,并将其源流设置为e.ChosenPhoto。然后,您可以将图像控件的大小设置为所需的值。

var bitmap = new BitmapImage();
bitmap.SetSource(e.ChosePhoto);

var image = new Image();
image.Source = bitmap;
image.Width = 200;
image.Height = 200;

Canvas.SetLeft(image, 10);
Canvas.SetTop(image, 10);
area.Children.Add(image);

答案 1 :(得分:0)

if (e.TaskResult == TaskResult.OK)
{
    BitmapImage bi = new BitmapImage();
    bi.SetSource(e.ChosenPhoto);
    WriteableBitmap b = new WriteableBitmap(bi);
    Image img = new Image();
    img.Source = b;           
    Canvas.SetLeft(img, 10);
    Canvas.SetTop(img, 10);
    area.Children.Add(img);    
}