Есть ли в WriteableBitmap новые функции в Silverlight 4? - PullRequest
2 голосов
/ 04 августа 2010

а если кто-нибудь может дать мне пример, как его использовать, с потоком?(не знаю, как это работает) Я знаю, как создать BitmapImage из URI, теперь мне нужно преобразовать это изображение в WriteableBitmap, но я получаю ошибку исключения null с чем-то вроде этого:

BitmapImage image = new BitmapImage(new Uri("http://www.example.com/example.png"));
WriteableBitmap newImage = new WriteableBitmap(image);

1 Ответ

4 голосов
/ 04 августа 2010

Короче говоря: Нет, в Silverlight 4 нет новых функций. WriteableBitmapEx пытается компенсировать недостающую функциональность.

Относительно вашей реальной проблемы: вы должны добавить обработчик BitmapImage.ImageFailed событие, чтобы увидеть, есть ли ошибка, когда изображение должно быть загружено.И вам необходимо создать WriteableBitmap в обработчике событий ImageOpened .

var image = new BitmapImage(new Uri("http://www.example.com/example.png"));
WriteableBitmap newImage = null;
image.ImageOpened += (s, e) => newImage = new WriteableBitmap(image);

Обратите внимание, что междоменные ссылки разрешены.Подробнее см. MSDN page . Вы должны поместить изображение в папку ClientBin веб-проекта и использовать вместо него относительный путь.

В качестве альтернативы вы также можете скомпилировать изображение в сборку как ресурс и загрузить его оттуда. WriteableBitmapEx имеет метод расширения, который немного облегчает эту задачу.Но имейте в виду, что это увеличивает размер сборки и увеличивает начальное время загрузки XAP.

// Load an image from the calling Assembly's resources only by passing the relative path
var writeableBmp = new WriteableBitmap(0, 0).FromResource("example.png");
...