load image into writeablebitmap

kiznore picture kiznore · Sep 3, 2012 · Viewed 10.8k times · Source

So Im trying trying to load an image into a WriteableBitmap but I'm getting a NullReferenceException. Can't figure out why because I think this used to work before

BitmapImage b = new BitmapImage(new Uri(@"images/Car.jpg", Urikind.Relative)); WriteableBitmap wb = new WriteableBitmap(b);

thats it. I have the car image as a resource in my project. It works fine as I can create a Image control and set its source to the BitmapImage and display it. Thanks

Answer

CC Inc picture CC Inc · Sep 3, 2012

As seen from other SO questions, it seems that the reason you get the null reference exception is that BitmapImage.CreateOptions Property default value is BitmapCreateOptions.DelayCreation. You can set it to BitmapCreateOptions.None and create WriteableBitmap after image loaded:

BitmapImage img = new BitmapImage(new Uri("somepath",UriKind.Relative));
img.CreateOptions = BitmapCreateOptions.None;
img.ImageOpened += (s, e) =>
   {
       WriteableBitmap wbm = new WriteableBitmap((BitmapImage)s);
   };

Using that code, the WritableBitmap will wait until the BitmapImage is loaded, and then it will be able to be assigned to the WritableBitmap.