Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > WPF, UWP, WinRT, XAML
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.11.2012, 13:34   #1
crawter
Пользователь
 
Регистрация: 09.06.2010
Сообщений: 16
По умолчанию WPF как отобразить картинку на canvas имея byte[]

Доброго времени суток.

Задача состоит в том, что бы передать с сервера массив битов, который на клиенте нужно превратить в картинку. Передать сразу картинку, к сожалению мы по определенным причинам не можем.

Упрощённо наш код выглядит так:
Здесь мы получаем картинку и преобразуем её в массив битов.
Код:
if (ofd.ShowDialog(this) == true)
{
    BinaryReader br = new BinaryReader(File.Open(ofd.FileName, FileMode.Open));
    img = new byte[br.BaseStream.Length];
    br.Read(img, 0, img.Length);
    br.Close();
}
Этот код действительно заполняет массив битов и вроде бы делает это даже правильно

Здесь мы пытаемся конвертировать её таким образом, что бы можно было отобразить её в приложении. И кажется, что именно в этом проблема.
Код:
Image bimage = new Image();
using (MemoryStream memoryStream = new MemoryStream(img))
{
    BitmapImage imagesrc = new BitmapImage();
    imagesrc.BeginInit();
    imagesrc.StreamSource = memoryStream;
    imagesrc.EndInit();
    bimage.Source = imagesrc;
}

bimage.Height = 300;
bimage.Width = 300;

bimage.SetValue(Canvas.TopProperty, 1.0);
bimage.SetValue(Canvas.LeftProperty, 1.0);
bimage.Stretch = Stretch.Fill;

Image_canv.Children.Add(bimage);
Image_canv.InvalidateVisual();
Мы пытались это сделать таким образом, но картинка всё равно не отображаеться. В отладчике, кстати, заметил какую-то проблему с метаданными, но не смог её локализовать и не уверен, что в ней проблема, к тому же, приложении не завершается аварийно с хоть каким-нибудь человеко-читаемым исключением, а просто ничего не делает.

Так же пытались использовать JpegEncoder, но, к сожалению, из этого тоже ничего не вышло, приложение в этом случае выдавало неизвестное исключение, про которое на msdn написано, что оно связано с COM обьектом и более никакой полезной информации.

Будем рады любой помощи или советам куда копать, что бы исправить это.
crawter вне форума Ответить с цитированием
Старый 10.11.2012, 05:22   #2
crawter
Пользователь
 
Регистрация: 09.06.2010
Сообщений: 16
По умолчанию

Решение было найдено !
crawter вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Отобразить в Image картинку с интернета Alest Работа с сетью в Delphi 22 21.05.2012 00:05
отобразить отдельную картинку в Webbrowser designer999 Работа с сетью в Delphi 0 25.01.2011 13:06
Как правельно отобразить на кнопке картинку во VB6? С.М.С Помощь студентам 3 27.06.2009 18:57
Как отобразить картинку из интернета на форме reyn90 Помощь студентам 0 01.06.2009 20:05
Подскажите, как лучше отобразить картинку! badfilin JavaScript, Ajax 0 12.05.2008 01:34