Страница: 1 |
Страница: 1 |
Вопрос: картинки в проге
Добавлено: 18.06.05 01:34
Автор вопроса: bas | Web-сайт:
Необходимо, например, иметь имаже бокс и в нем показывать картинки. как сделать так, чтобы картинки не валялись файлами на диске, а были бы захаваны в нутри проги?
Ответы
Всего ответов: 13
Номер ответа: 1
Автор ответа:
Дмитрий Щапов
Вопросов: 71
Ответов: 321
Профиль | | #1
Добавлено: 18.06.05 03:30
мона как ресурсы, потом loadPictureResource - типа того.
Номер ответа: 2
Автор ответа:
Дмитрий Щапов
Вопросов: 71
Ответов: 321
Профиль | | #2
Добавлено: 18.06.05 03:37
picture1.picture = LoadResPicture(id, 0)
Если хочешь экзотики, тогда можешь хранить в ImageList, но все одинакового размера.
Ну а если ты совсем совсем помешанный на труде, тогда без проблем мона быстро написать свой контрол, который хранил-бы в себе картинки разного рода, размера и содержания. - Что я недавно и делал Но потом оказалось что делал зря и я его удалил.. :|
Номер ответа: 3
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #3
Добавлено: 18.06.05 12:22
нули не рулят, рулят константы vbResBitmap, vbResIcon, vbResCursor ))
Номер ответа: 4
Автор ответа:
bas
Вопросов: 16
Ответов: 30
Web-сайт:
Профиль | | #4
Добавлено: 18.06.05 12:40
А как запихать картинки в ресурсы?
Номер ответа: 5
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #5
Добавлено: 18.06.05 14:50
см. ниже, после моего (или после последнего)сообщения есть кнопка "Сохранить", а после неё ссылка "Поиск по форуму" от тебе как раз туда. Там вводиш "Ресурсы" и двавиш "Искать" и всё...
Номер ответа: 6
Автор ответа:
bas
Вопросов: 16
Ответов: 30
Web-сайт:
Профиль | | #6
Добавлено: 18.06.05 19:37
Ага, с bmp-шками работает. А вот как gif или jpg загрузить?
Картинка добавляется в "CUSTOM", а как ее выташить?
Picture1.Picture = LoadResPicture(101, "CUSTOM" - не пашет...
Ктати, какие там бывают restype?
Номер ответа: 7
Автор ответа:
AgentFire
ICQ: 192496851
Вопросов: 75
Ответов: 3178
Профиль | | #7
Добавлено: 18.06.05 19:50
OK, зри:
Вощем, создаешь невидимые (Visible = False) PictureBox'ы (Array) на форме с разными картинками а потом, когда нужно будет, кастуешь:
P.S. Casting Speed нуен не меньше 166, а то не попрет... ))
Номер ответа: 8
Автор ответа:
Morpheus
Вопросов: 224
Ответов: 3777
Web-сайт:
Профиль | | #8
Добавлено: 18.06.05 20:16
Хе, да положи на отдельной форме кучу пикчербоксов да и всё. А лучше, если ты пишеш игру какую нить, сделай один большой пикчербокс и оттуда доставай-это даст тебе возможность легко создавать скины к проге.
Номер ответа: 9
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #9
Добавлено: 18.06.05 22:34
LoadResData к твоим услугам!
ну и собственно вот этот код:
Private Declare Function CreateStreamOnHGlobal Lib "ole32" (ByVal hGlobal As Long, ByVal fDeleteOnRelease As Long, ppstm As Any) As Long
Private Declare Function OleLoadPicture Lib "olepro32" (pStream As Any, ByVal lSize As Long, ByVal fRunmode As Long, ByRef riid As Byte, ppvObj As Any) As Long
Private Declare Function CLSIDFromString Lib "ole32" (ByVal lpsz As Any, ByRef pclsid As Byte) As Long
Private Type PictDesc
cbSizeofStruct As Long
picType As Long
hImage As Long
xExt As Long
yExt As Long
End Type
'--------------------------------------------------------------------------------
' Проект : OfflineClient
' Процедура : PictureFromMemory
' Описание : Получение IPicture из массива
' Кем создан : SNE
' Дата-Время : 15.11.2004-21:45:57
'
' Параметры : btData() - Данные картинки
'--------------------------------------------------------------------------------
Public Function PictureFromMemory(ByRef btData() As Byte) As IPicture
Dim IID_IPicture(16) As Byte
Dim pGlobal As Long, pStream As IUnknown
Const sIID_IPicture = "{7BF80980-BF32-101A-8BBB-00AA00300CAB}"
pGlobal = GlobalAlloc(0&, UBound(btData) + vbNull)
Call CopyMemory(ByVal pGlobal, btData(0), UBound(btData) + vbNull)
If CreateStreamOnHGlobal(pGlobal, True, pStream) = 0& Then
If CLSIDFromString(StrPtr(sIID_IPicture), IID_IPicture(0)) = 0& Then
Call OleLoadPicture(ByVal ObjPtr(pStream), UBound(btData) + vbNull, False, IID_IPicture(0), PictureFromMemory)
End If
End If
If PictureFromMemory Is Nothing Then Call GlobalFree(pGlobal)
End Function
Picture1.Picture = LoadResPicture(101, "CUSTOM" - не пашет...
Ктати, какие там бывают restype?
Номер ответа: 10
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #10
Добавлено: 18.06.05 22:35
LoadResData к твоим услугам!
ну и собственно вот этот код:
Private Declare Function CreateStreamOnHGlobal Lib "ole32" (ByVal hGlobal As Long, ByVal fDeleteOnRelease As Long, ppstm As Any) As Long
Private Declare Function OleLoadPicture Lib "olepro32" (pStream As Any, ByVal lSize As Long, ByVal fRunmode As Long, ByRef riid As Byte, ppvObj As Any) As Long
Private Declare Function CLSIDFromString Lib "ole32" (ByVal lpsz As Any, ByRef pclsid As Byte) As Long
Private Type PictDesc
cbSizeofStruct As Long
picType As Long
hImage As Long
xExt As Long
yExt As Long
End Type
'--------------------------------------------------------------------------------
' Проект : OfflineClient
' Процедура : PictureFromMemory
' Описание : Получение IPicture из массива
' Кем создан : SNE
' Дата-Время : 15.11.2004-21:45:57
'
' Параметры : btData() - Данные картинки
'--------------------------------------------------------------------------------
Public Function PictureFromMemory(ByRef btData() As Byte) As IPicture
Dim IID_IPicture(16) As Byte
Dim pGlobal As Long, pStream As IUnknown
Const sIID_IPicture = "{7BF80980-BF32-101A-8BBB-00AA00300CAB}"
pGlobal = GlobalAlloc(0&, UBound(btData) + vbNull)
Call CopyMemory(ByVal pGlobal, btData(0), UBound(btData) + vbNull)
If CreateStreamOnHGlobal(pGlobal, True, pStream) = 0& Then
If CLSIDFromString(StrPtr(sIID_IPicture), IID_IPicture(0)) = 0& Then
Call OleLoadPicture(ByVal ObjPtr(pStream), UBound(btData) + vbNull, False, IID_IPicture(0), PictureFromMemory)
End If
End If
If PictureFromMemory Is Nothing Then Call GlobalFree(pGlobal)
End Function
только те что я указал...
Номер ответа: 11
Автор ответа:
nicolai
ICQ: 197368786
Вопросов: 6
Ответов: 91
Профиль | | #11
Добавлено: 19.06.05 10:48
Вощем, создаешь невидимые (Visible = False) PictureBox'ы (Array) на форме с разными картинками а потом, когда нужно будет, кастуешь:
MainPicture.Picture = picHiddenArr(intIndex).Picture
Номер ответа: 12
Автор ответа:
Илья
ICQ: 251647191
Вопросов: 37
Ответов: 167
Web-сайт:
Профиль | | #12
Добавлено: 20.06.05 15:30
имхо при компиляции барсик сам помещает картинки в ресурсы
Номер ответа: 13
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #13
Добавлено: 20.06.05 15:36
неа, хранит бинарные данные в секции кода )