Модераторы: Akina

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Загрузка изображения из середины файла, Как это сделать? 
:(
    Опции темы
Anhost
Дата 19.4.2005, 10:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



У меня есть файл (типа файл ресурсов) в котором просто прикреплены друг к другу BMP'шки. Нужная мне БМП-шка Начинается с 31337 байта. Как мне загрузить её, допустим в объект Image?
Можно, конечно сохранить её на диск а потои loadpicture... Но это как-то деревянно.
Буду очень благодарен!
PM MAIL ICQ   Вверх
Akina
Дата 19.4.2005, 11:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



Цитата(Help)
Seek Statement
Sets the position for the next read/write operation within a file opened using the Open statement.
Syntax
Seek [#]filenumber, position


блин...


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Black_Star
Дата 19.4.2005, 15:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Akina, не в том суть вопроса.

Anhost, можно загружать и из середины, тока не сразу в image or picture, а в память, а потом делать CreateBitmap smile
PM ICQ   Вверх
Akina
Дата 19.4.2005, 15:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



Black_Star
Ну почему... можно же хранить метафайл и грузить сразу в область памяти, занятую картинкой...
Вообще-то самое не-"деревянное" - это все-таки пользоваться ресурсами, а не их подобием...


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Black_Star
Дата 19.4.2005, 16:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата
Вообще-то самое не-"деревянное" - это все-таки пользоваться ресурсами, а не их подобием...

smile Эт точно, но когда картинок свыше 1000...
PM ICQ   Вверх
Anhost
Дата 19.4.2005, 19:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата
можно загружать и из середины, тока не сразу в image or picture, а в память, а потом делать CreateBitmap

Вот здесь, если можно, чуть подробнее.
PM MAIL ICQ   Вверх
Black_Star
Дата 20.4.2005, 00:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Справочника под рукой нету...
Код

dim fr as long,buff() as byte
fr=freefile
redim buff(1 to MapL)
open "bigfile.doc" for binary as fr
get #fr,X,buff
close #fr
'MapL - длина файла
'X - позиция в файле, где лежит картинка
'А далее createbitmap, тока я не помню как его юзать...

PM ICQ   Вверх
Anhost
Дата 20.4.2005, 08:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Это всё я знаю, а вот как юзать createBitmap я не знаю!!! В том и проблема!!!
PM MAIL ICQ   Вверх
Anhost
Дата 21.4.2005, 08:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Хорошо, поставлю вопрос по-другому.
Я загрузил картинку из файла в переменную X (as String).
Что мне надо сделать, чтобы отобразить эту картинку в Image?
PM MAIL ICQ   Вверх
Exception
Дата 21.4.2005, 10:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

Репутация: 7
Всего: 186



Создай временный файл, в который и пихаешь картинку. А потом
Код

Picture1.Picture = LoadPicture("E:\Pic.tmp")

PM   Вверх
Guest
Дата 22.4.2005, 08:28 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Цитата
Создай временный файл, в который и пихаешь картинку.

Хорошо. Представь, что у меня нет винта, на который можно сохранить временный файл.... Или таких картинок 18000...
Если бы можно было в память как-нибудь, а потом в Image....
  Вверх
Gannibal
Дата 23.4.2005, 13:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 18
Всего: 17



на компе нашёл в тхт файле вот это.. может поможет...

Скопировать рисунок из PictureBox в буфер обмена
Код

Private Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type

Private Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long
Private Const SRCCOPY = &HCC0020 ' (DWORD) dest = source
Private Declare Function CreateCompatibleDC Lib "gdi32" (ByVal hDC As Long) As Long
Private Declare Function CreateCompatibleBitmap Lib "gdi32" (ByVal hDC As Long, ByVal nWidth As Long, ByVal nHeight As Long) As Long
Private Declare Function SelectObject Lib "gdi32" (ByVal hDC As Long, ByVal hObject As Long) As Long
Private Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long
Private Declare Function OpenClipboard Lib "USER32" (ByVal hWnd As Long) As Long
Private Declare Function CloseClipboard Lib "USER32" () As Long
Private Declare Function SetClipboardData Lib "USER32" (ByVal wFormat As Long, ByVal hMem As Long) As Long
Private Declare Function EmptyClipboard Lib "USER32" () As Long
Private Const CF_BITMAP = 2

Public Function CopyEntirePicture(ByRef objFrom As Object) As Boolean
Dim lhDC As Long
Dim lhBMP As Long
Dim lhBMPOld As Long
Dim lWidthPixels As Long
Dim lHeightPixels As Long
' Create a DC compatible with the object we're copying from:
lhDC = CreateCompatibleDC(objFrom.hDC)
If (lhDC <> 0) Then
' Create a bitmap compatible with the object we're copying from:
lWidthPixels = objFrom.ScaleX(objFrom.ScaleWidth, objFrom.ScaleMode, vbPixels)
lHeightPixels = objFrom.ScaleY(objFrom.ScaleHeight, objFrom.ScaleMode, vbPixels)
lhBMP = CreateCompatibleBitmap(objFrom.hDC, lWidthPixels, lHeightPixels)
If (lhBMP <> 0) Then
' Select the bitmap into the DC we have created, and store the old bitmap that was there:
lhBMPOld = SelectObject(lhDC, lhBMP)
' Copy the contents of objFrom to the bitmap:
BitBlt lhDC, 0, 0, lWidthPixels, lHeightPixels, objFrom.hDC, 0, 0, SRCCOPY
' Remove the bitmap from the DC:
SelectObject lhDC, lhBMPOld
' Now set the clipboard to the bitmap:
OpenClipboard 0
EmptyClipboard
SetClipboardData CF_BITMAP, lhBMP
CloseClipboard
' We don't delete the Bitmap here - it is now owned
' by the clipboard and Windows will delete it for us
' when the clipboard changes or the program exits.
End If
' Clear up the device context we created:
DeleteObject lhDC
End If
End Function

Private Sub Command1_Click()
CopyEntirePicture Picture1
End Sub

Private Sub Form_Load()
Dim i As Long
' Draw something in the Picture box:
With Picture1.Font
.Name = "Arial"
.Bold = True
.Size = 24
End With
For i = 1 To 20
Picture1.ForeColor = QBColor(i Mod 15)
Picture1.Print "vbAccelerator"
Next i
End Sub 



--------------------
Я родился в этом безумном мире - и Я сделаю всё чтобы в нём выжить!
PM MAIL ICQ   Вверх
Exception
Дата 24.4.2005, 12:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

Репутация: 7
Всего: 186



M.E.G.U.S имелось в виду другое.
То есть ты в переменную стринг загрузил битмап, и надо прям из памяти его читать smile
PM   Вверх
cardinal
Дата 24.4.2005, 15:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 19
Всего: 99



http://www.vbaccelerator.com/tips/vba0025.htm
или
http://www.activevb.de/tipps/vb6tipps/tipp0654.html
(на немецком)

Возможно поможет...


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
Anhost
Дата 25.4.2005, 08:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



smile Первая ссылка. на что-то вообще отдалённое...
А вторая (кстати, весьма полезная) про структуру BMP-файла.
Но для моеё ситуации ничего нет... smile
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по VB обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB6 | Следующая тема »


 




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


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

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