Модераторы: gambit, Kefir, Partizan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вывести изображение Bitmap в Image 
V
    Опции темы
vikaz
Дата 8.9.2010, 15:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 869
Регистрация: 15.2.2006

Репутация: 1
Всего: 12



Всем привет!
С одним устройством (сканер) идет dll получает от сканера изображение (Bitmap). Это изображение нужно вывести на форме WPF в Image. Подскажите, как это можно осуществить? Заранее спасибо



--------------------
user posted image

Нет ничего настолько исправного, чтобы в нем не было ошибок. /Ф. Петрарка/ 
PM MAIL ICQ Skype   Вверх
CYBERDREAM
Дата 8.9.2010, 15:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I think, there4 I am
***


Профиль
Группа: Завсегдатай
Сообщений: 1096
Регистрация: 31.10.2006
Где: CyberLand

Репутация: 3
Всего: 28



http://www.infosysblogs.com/microsoft/2008...ge_control.html
здесь найдешь 7 сценариев загрузки


--------------------
Ищем .Net, Java, Javascript разработчиков, Кипр, Лимассол. (знание английского необязательно)
Telegram, skype: kuchuk.artiom
PM MAIL WWW   Вверх
vikaz
Дата 8.9.2010, 17:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 869
Регистрация: 15.2.2006

Репутация: 1
Всего: 12



За ссылку спасибо, но или я плохо смотрю или..... а какой вариант подойдет?


--------------------
user posted image

Нет ничего настолько исправного, чтобы в нем не было ошибок. /Ф. Петрарка/ 
PM MAIL ICQ Skype   Вверх
CYBERDREAM
Дата 8.9.2010, 18:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I think, there4 I am
***


Профиль
Группа: Завсегдатай
Сообщений: 1096
Регистрация: 31.10.2006
Где: CyberLand

Репутация: 3
Всего: 28



По идее 4 или 5, не могу точно сказать, убегаю с работы, дома гляну


--------------------
Ищем .Net, Java, Javascript разработчиков, Кипр, Лимассол. (знание английского необязательно)
Telegram, skype: kuchuk.artiom
PM MAIL WWW   Вверх
vikaz
Дата 8.9.2010, 18:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 869
Регистрация: 15.2.2006

Репутация: 1
Всего: 12



Наверное придется пользоваться вот таким конвертером Bitmap->BitmapSource. Других вариантов пока не нашел....
Код

public BitmapSource ToBitmapSource(System.Drawing.Bitmap source)
        {
            double _dpiX;
            double _dpiY;
            int _height;
            int _width;
            byte[] _pixels;

            _dpiX = source.HorizontalResolution;
            _dpiY = source.VerticalResolution;
            _height = source.Height;
            _width = source.Width;

            System.Drawing.Imaging.PixelFormat pf = source.PixelFormat;

          //  if (pf != System.Drawing.Imaging.PixelFormat.Format32bppArgb)
          //      source = source.ConvertTo(System.Drawing.Imaging.PixelFormat.Format32bppArgb, null);

            System.Windows.Media.PixelFormat _pf = System.Windows.Media.PixelFormats.Bgra32;
            _pixels = new byte[_width * _height * 4];

            System.Drawing.Imaging.BitmapData bmData = source.LockBits(
                new System.Drawing.Rectangle(0, 0, _width, _height),
                System.Drawing.Imaging.ImageLockMode.ReadWrite,
                System.Drawing.Imaging.PixelFormat.Format32bppArgb
                );

            int strideBM = bmData.Stride;
            System.IntPtr Scan0 = bmData.Scan0;

            unsafe
            {
                byte* p = (byte*)(void*)Scan0;
                int offset = 0;
                for (int j = 0; j < _height; j++)
                {
                    int offsetBM = strideBM * j;
                    for (int i = 0; i < _width; i++)
                    {
                        _pixels[offset++] = p[offsetBM++];//blue
                        _pixels[offset++] = p[offsetBM++];//green
                        _pixels[offset++] = p[offsetBM++];//red
                        _pixels[offset++] = p[offsetBM++];//alfa
                    }
                }
            }

            source.UnlockBits(bmData);

            return System.Windows.Media.Imaging.BitmapSource.Create(
                _width, _height, _dpiX, _dpiY, System.Windows.Media.PixelFormats.Bgra32, null, _pixels, _width * 4);
        }



--------------------
user posted image

Нет ничего настолько исправного, чтобы в нем не было ошибок. /Ф. Петрарка/ 
PM MAIL ICQ Skype   Вверх
CYBERDREAM
Дата 8.9.2010, 20:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I think, there4 I am
***


Профиль
Группа: Завсегдатай
Сообщений: 1096
Регистрация: 31.10.2006
Где: CyberLand

Репутация: 3
Всего: 28



по идее без конвертора не обойтись) но вроде можно и попроще конвертор


--------------------
Ищем .Net, Java, Javascript разработчиков, Кипр, Лимассол. (знание английского необязательно)
Telegram, skype: kuchuk.artiom
PM MAIL WWW   Вверх
CYBERDREAM
Дата 8.9.2010, 22:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I think, there4 I am
***


Профиль
Группа: Завсегдатай
Сообщений: 1096
Регистрация: 31.10.2006
Где: CyberLand

Репутация: 3
Всего: 28



Код

            System.Drawing.Image im = System.Drawing.Image.FromFile("далеко далеко");//чисто для примера, у тебя уже готовый Image
            MemoryStream ms = new MemoryStream();
            im.Save(ms, new ImageFormat(im.RawFormat.Guid));
            byte[] bytes = ms.ToArray();
            ms = new MemoryStream(bytes);// казалось бы можно было бы испольтзовать выше сохраненный stream, а нет, лажа какая то, так и не понял почему, что то я не отцепляю по ходу.

            BitmapImage image = new BitmapImage();
            image.BeginInit();
            image.StreamSource = ms;
            image.EndInit();
            imgFileBinding.Source = image; //финальный акорд. 

Можно поизвращаться и по другому, но мне кажется это оптимальнй вариант, т.к. не нужно конвертеров. Хотя полюбому что то еще лучше есть))) smile 


--------------------
Ищем .Net, Java, Javascript разработчиков, Кипр, Лимассол. (знание английского необязательно)
Telegram, skype: kuchuk.artiom
PM MAIL WWW   Вверх
vikaz
Дата 9.9.2010, 05:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 869
Регистрация: 15.2.2006

Репутация: 1
Всего: 12



Цитата(CYBERDREAM @  9.9.2010,  00:53 Найти цитируемый пост)
Можно поизвращаться и по другому, но мне кажется это оптимальнй вариант, т.к. не нужно конвертеров. Хотя полюбому что то еще лучше есть))) smile  

Видишь ли, я не работаю с файлами на жестком диске, я получаю Bitmap из устройтства..... 


--------------------
user posted image

Нет ничего настолько исправного, чтобы в нем не было ошибок. /Ф. Петрарка/ 
PM MAIL ICQ Skype   Вверх
CYBERDREAM
Дата 9.9.2010, 06:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I think, there4 I am
***


Профиль
Группа: Завсегдатай
Сообщений: 1096
Регистрация: 31.10.2006
Где: CyberLand

Репутация: 3
Всего: 28



так первую строку стери, ведь первая строка это это чтобы получить хоть какой то image мне, у меня то устройства такого нет


--------------------
Ищем .Net, Java, Javascript разработчиков, Кипр, Лимассол. (знание английского необязательно)
Telegram, skype: kuchuk.artiom
PM MAIL WWW   Вверх
CYBERDREAM
Дата 9.9.2010, 12:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I think, there4 I am
***


Профиль
Группа: Завсегдатай
Сообщений: 1096
Регистрация: 31.10.2006
Где: CyberLand

Репутация: 3
Всего: 28



Ну что, разрулил?


--------------------
Ищем .Net, Java, Javascript разработчиков, Кипр, Лимассол. (знание английского необязательно)
Telegram, skype: kuchuk.artiom
PM MAIL WWW   Вверх
vikaz
Дата 9.9.2010, 13:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 869
Регистрация: 15.2.2006

Репутация: 1
Всего: 12



пока нет! Конвертер, который выложен выше, так-то работает, но когда я его включаю в код, то программа вылетает. Борюсь и разбираюсь....

Добавлено через 6 минут и 37 секунд
Код

private void UpdateScreenImage(Bitmap hBitmap)
        {
            if (m_bExit) return;
            if (!this.Dispatcher.CheckAccess())
            {
                SetImageCallback d = new SetImageCallback(this.UpdateScreenImage);
                this.Dispatcher.Invoke(d, new object[] { hBitmap });
            }
            else
            {
                MemoryStream ms = new MemoryStream();
                hBitmap.Save(ms, new ImageFormat(hBitmap.RawFormat.Guid));
                byte[] bytes = ms.ToArray();
                ms = new MemoryStream(bytes);
                BitmapImage image = new BitmapImage();
                image.BeginInit();
                image.StreamSource = ms;
                image.EndInit();
                PictureFingerPrint.Source = image; 
            }
        }


user posted image


--------------------
user posted image

Нет ничего настолько исправного, чтобы в нем не было ошибок. /Ф. Петрарка/ 
PM MAIL ICQ Skype   Вверх
vikaz
Дата 9.9.2010, 13:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 869
Регистрация: 15.2.2006

Репутация: 1
Всего: 12



ЗЫ! Расположил на форме PictureBox через WindowsFormsHost.... с ним все работает на ура. Но не хочу я так делать..... smile


--------------------
user posted image

Нет ничего настолько исправного, чтобы в нем не было ошибок. /Ф. Петрарка/ 
PM MAIL ICQ Skype   Вверх
CYBERDREAM
Дата 9.9.2010, 13:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I think, there4 I am
***


Профиль
Группа: Завсегдатай
Сообщений: 1096
Регистрация: 31.10.2006
Где: CyberLand

Репутация: 3
Всего: 28



я делал через контрол Image
с другими не тестил


--------------------
Ищем .Net, Java, Javascript разработчиков, Кипр, Лимассол. (знание английского необязательно)
Telegram, skype: kuchuk.artiom
PM MAIL WWW   Вверх
vikaz
Дата 9.9.2010, 13:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 869
Регистрация: 15.2.2006

Репутация: 1
Всего: 12



Цитата(CYBERDREAM @  9.9.2010,  15:38 Найти цитируемый пост)
я делал через контрол Image
с другими не тестил 

Я не про то!
а про вот это:
Код

<WindowsFormsHost Grid.Column="1" Grid.Row="2" Height="154" HorizontalAlignment="Left" Name="windowsFormsHost1" VerticalAlignment="Top" Width="173" Grid.RowSpan="2" Foreground="White">
            <mcl:PictureBox x:Name="pic_123" Height="480" Width="320" SizeMode="StretchImage"></mcl:PictureBox>
        </WindowsFormsHost> 


Код

private void UpdateScreenImage(Bitmap hBitmap)
        {
            if (m_bExit) return;
            if (!this.Dispatcher.CheckAccess())
            {
                SetImageCallback d = new SetImageCallback(this.UpdateScreenImage);
                this.Dispatcher.Invoke(d, new object[] { hBitmap });
            }
            else pic_123.Image = hBitmap;
        }



--------------------
user posted image

Нет ничего настолько исправного, чтобы в нем не было ошибок. /Ф. Петрарка/ 
PM MAIL ICQ Skype   Вверх
CYBERDREAM
Дата 9.9.2010, 14:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I think, there4 I am
***


Профиль
Группа: Завсегдатай
Сообщений: 1096
Регистрация: 31.10.2006
Где: CyberLand

Репутация: 3
Всего: 28



а почему не контрол Image?



--------------------
Ищем .Net, Java, Javascript разработчиков, Кипр, Лимассол. (знание английского необязательно)
Telegram, skype: kuchuk.artiom
PM MAIL WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | WPF и Silverlight | Следующая тема »


 




[ Время генерации скрипта: 0.4180 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.