Использование класса Image и отображение рисунков

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

areh
Постоялец
Постоялец
 
Сообщения: 530
Зарегистрирован: 02.12.2002 (Пн) 12:28
Откуда: РОССИЯ, Салехард

Использование класса Image и отображение рисунков

Сообщение areh » 07.04.2004 (Ср) 13:28

Всем привет,

возникла у меня тут проблемма:

Есть некоторый файл, в котором "склеины" растровые файлы, т.е. просто побитово копировались несколько растров.

Так же есть файл, в котором содержиться информация, о том сколько растров в первом файле. Их расположение, т.е. смещение относительно начала файла и размер начального файла.

Дык вот я хотел узнать, есть ли возможность работать с этими растрами, т.е. без проблем можно прочитать массив байт, представляющий собой файл растра, но как его можно засунуть в Image или PictureBox?

подскажите пожалуйста, а то что-то никаких идей нету...

да, насчет возможности чтения растров из потока (stream) этот вариант, как мне кажеться не подходит, т.к. нет возможности читать произвольный файл...

ну вообщем надеюсь на ваши умные идеи по этому поводу...

Kalan
Новичок
Новичок
 
Сообщения: 47
Зарегистрирован: 20.02.2004 (Пт) 17:04
Откуда: Москва

Сообщение Kalan » 08.04.2004 (Чт) 14:33

А нельзя распаковать все эти растры во временную директорию, поюзать оттуда, а конце удалить?

areh
Постоялец
Постоялец
 
Сообщения: 530
Зарегистрирован: 02.12.2002 (Пн) 12:28
Откуда: РОССИЯ, Салехард

Сообщение areh » 08.04.2004 (Чт) 15:13

Можно то можно, я то думал, вдруг есть способ правильней...

Kalan
Новичок
Новичок
 
Сообщения: 47
Зарегистрирован: 20.02.2004 (Пт) 17:04
Откуда: Москва

Сообщение Kalan » 08.04.2004 (Чт) 16:08

Ну к сожалению способ правильнее мне на ум не приходит, но если хочешь спроси Гранджа - он все знает

Nord777
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1144
Зарегистрирован: 22.02.2004 (Вс) 13:15
Откуда: Подольск

Использование класса Image и отображение рисунков

Сообщение Nord777 » 08.04.2004 (Чт) 17:44

Возможно что это то, что тебе надо

Dim buffer() As Byte
Dim Im As System.Drawing.Image
Dim MS As System.IO.MemoryStream

'здесь заносишь в байтовый массив один из файлов растра
' buffer(x)=..... как это делать решать тебе

'далее создаешь из этого массива поток
MS = New System.IO.MemoryStream(buffer)

' а теперь из потока создаешь image
Im = System.Drawing.Image.FromStream(MS)

areh
Постоялец
Постоялец
 
Сообщения: 530
Зарегистрирован: 02.12.2002 (Пн) 12:28
Откуда: РОССИЯ, Салехард

Сообщение areh » 08.04.2004 (Чт) 18:26

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

но если это работает, то безусловно, это именно то что мне нужно...

спасибо

areh
Постоялец
Постоялец
 
Сообщения: 530
Зарегистрирован: 02.12.2002 (Пн) 12:28
Откуда: РОССИЯ, Салехард

Сообщение areh » 13.04.2004 (Вт) 16:59

Спасибо Nord777, ты мне очень помог...

теперь у меня ещё один вопросик возник, как можно изменять размер изображения? т.е. уменьшать (масштабировать) его.

например, была картинка 200*100, как из неё сделать новую, 100*50

заранее спасибо...

Nord777
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1144
Зарегистрирован: 22.02.2004 (Вс) 13:15
Откуда: Подольск

Сообщение Nord777 » 16.04.2004 (Пт) 18:25

Можно сделать так:

Dim Im As Image
Dim Gr As Graphics
Dim DestRect As Rectangle

Im = Image.FromFile("D:\Мои Документы\FOTO\17.jpg")
DestRect = New Rectangle(0, 0, Im.Width, Im.Height)

Gr = PictureBox2.CreateGraphics
Gr.DrawImage(Im, PictureBox2.ClientRectangle, DestRect, GraphicsUnit.Pixel)

Nord777
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1144
Зарегистрирован: 22.02.2004 (Вс) 13:15
Откуда: Подольск

Сообщение Nord777 » 16.04.2004 (Пт) 18:31

Забыл комментарии
Какого бы размера не была картинка 17.jpg, обьект Graphics впихнет ее в размеры PictureBox2

И кстати посмотри описание на функцию GetThumbnailImage класса Image. Мне кажется в твоем случае она подойдет больше.
А вобще вариантов море

areh
Постоялец
Постоялец
 
Сообщения: 530
Зарегистрирован: 02.12.2002 (Пн) 12:28
Откуда: РОССИЯ, Салехард

Сообщение areh » 17.04.2004 (Сб) 13:12

очередное спасибо Nord777

тот пример, который ты написал, не совсем то, даже совсем не то, чего мне надо было, а вот функция GetThumbnailImage именно то, чего я хотел!

вообщем сенкс..


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 35

    TopList  
cron