Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: картинки в проге Добавлено: 18.06.05 01:34  

Автор вопроса:  bas | Web-сайт: www.klyaksa.net
Необходимо, например, иметь имаже бокс и в нем показывать картинки. как сделать так, чтобы картинки не валялись файлами на диске, а были бы захаваны в нутри проги?

Ответить

  Ответы Всего ответов: 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-сайт: hw.t-k.ru
 Профиль | | #3
Добавлено: 18.06.05 12:22
нули не рулят, рулят константы :) vbResBitmap, vbResIcon, vbResCursor :)))

Ответить

Номер ответа: 4
Автор ответа:
 bas



Вопросов: 16
Ответов: 30
 Web-сайт: www.klyaksa.net
 Профиль | | #4
Добавлено: 18.06.05 12:40
А как запихать картинки в ресурсы?

Ответить

Номер ответа: 5
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #5 Добавлено: 18.06.05 14:50
см. ниже, после моего (или после последнего)сообщения есть кнопка "Сохранить", а после неё ссылка "Поиск по форуму" от тебе как раз туда. Там вводиш "Ресурсы" и двавиш "Искать" и всё... :)

Ответить

Номер ответа: 6
Автор ответа:
 bas



Вопросов: 16
Ответов: 30
 Web-сайт: www.klyaksa.net
 Профиль | | #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) на форме с разными картинками а потом, когда нужно будет, кастуешь:

MainPicture.Picture = picHiddenArr(intIndex).Picture


P.S. Casting Speed нуен не меньше 166, а то не попрет... ;)))

Ответить

Номер ответа: 8
Автор ответа:
 Morpheus



Вопросов: 224
Ответов: 3777
 Web-сайт: xury.zx6.ru
 Профиль | | #8
Добавлено: 18.06.05 20:16
Хе, да положи на отдельной форме кучу пикчербоксов да и всё. А лучше, если ты пишеш игру какую нить, сделай один большой пикчербокс и оттуда доставай-это даст тебе возможность легко создавать скины к проге.

Ответить

Номер ответа: 9
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #9
Добавлено: 18.06.05 22:34
Ага, с bmp-шками работает. А вот как gif или jpg загрузить? Картинка добавляется в "CUSTOM", а как ее выташить?


LoadResData к твоим услугам!

ну и собственно вот этот код:

Private Declare Function OleCreatePictureIndirect Lib "OLEPRO32.DLL" (lpPictDesc As PictDesc, ByRef riid As Byte, ByVal fPictureOwnsHandle As Long, iPic As IPicture) As Long
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-сайт: hw.t-k.ru
 Профиль | | #10
Добавлено: 18.06.05 22:35
Ага, с bmp-шками работает. А вот как gif или jpg загрузить? Картинка добавляется в "CUSTOM", а как ее выташить?


LoadResData к твоим услугам!

ну и собственно вот этот код:

Private Declare Function OleCreatePictureIndirect Lib "OLEPRO32.DLL" (lpPictDesc As PictDesc, ByRef riid As Byte, ByVal fPictureOwnsHandle As Long, iPic As IPicture) As Long
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


Ктати, какие там бывают restype?

только те что я указал...

Ответить

Номер ответа: 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-сайт: www.lirc.narod.ru
 Профиль | | #12
Добавлено: 20.06.05 15:30
имхо при компиляции барсик сам помещает картинки в ресурсы

Ответить

Номер ответа: 13
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #13
Добавлено: 20.06.05 15:36
имхо при компиляции барсик сам помещает картинки в ресурсы

неа, хранит бинарные данные в секции кода )

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам