Visual Basic, .NET, ASP, VBScript
 

   
   
     

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

Страница: 1 |

 

  Вопрос: тип данных IPictureDisp Добавлено: 22.05.06 20:49  

Автор вопроса:  Nj | ICQ: 223663115 
Что за данные в IPictureDisp - т.е. понятно, что картинка - только что это: куча цифр или что? Что в себе хранят переменные и свойства подобного типа?

Ответить

  Ответы Всего ответов: 6  

Номер ответа: 1
Автор ответа:
 Yeputons



ICQ: 278444762 

Вопросов: 71
Ответов: 179
 Профиль | | #1 Добавлено: 22.05.06 21:08
"Куча цифр" - это уникальный идентефикатор картинки, который возвращаеют через регистр EAX WINDOWS API-функции CreateImage, CreateCursor, CreateIcon. Т.е. это возвращаемое этими функциями значение. Потом в функции CreateWindowEx задаётся именно эта "куча цифр". ВСЕ ДРУЖНО ИЗУЧАЕМ АССЕМБЛЕР И WINDOWS API!!! :)

Ответить

Номер ответа: 2
Автор ответа:
 Nj



ICQ: 223663115 

Вопросов: 21
Ответов: 285
 Профиль | | #2 Добавлено: 22.05.06 21:57
Спасибо... Так, следовательно сам битмап хранится в чем? EAX WINDOWS? Как просто получить картинку из памяти в виде байтового массива или чего подобного?

Ответить

Номер ответа: 3
Автор ответа:
 Yeputons



ICQ: 278444762 

Вопросов: 71
Ответов: 179
 Профиль | | #3 Добавлено: 23.05.06 16:26
Во-первых, возволь исправить тебя насчет "EAX WINDOWS". EAX - это название регистра. А WINDOWS относится к WINDOWS API. И вообще это ассемблер.
Как получить картинку из памяти я не знаю. Знаю только один метод:
1)Создаешь на форме PictureBox, размером с твою картинку.
2)Делаешь ему BorderStyle=NONE, Visible=False.
3)Даешь ему имя, например ByteArray
4)Загружаешь в него картинку командой ByteArray.Picture = LoadImage(...)
5)Затем считываешь командами ByteArray.Point(X, Y)

Ответить

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


 

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

Вопросов: 236
Ответов: 8362
 Профиль | | #4 Добавлено: 23.05.06 17:12
'--------------------------------------------------------------------------------
' Проект     :  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

'--------------------------------------------------------------------------------
' Проект     :  OfflineClient
' Процедура  :  PictureFromBitmap
' Описание   :  Перевод Bitmap в Picture
' Кем создан :  SNE
' Дата-Время :  20.11.2004-0:30:20
'
' Параметры  :  hBmp    - Хэндл
'--------------------------------------------------------------------------------
Public Function PictureFromBitmap(ByVal hBmp As Long) As IPicture
    Dim IID_IPicture(16) As Byte
    Dim oNewPic As IPicture, tPicConv As PictDesc

    With tPicConv
       .cbSizeofStruct = Len(tPicConv)
       .picType = vbPicTypeBitmap
       .hImage = hBmp
    End With

    Call CopyMemory(IID_IPicture(0), &H20400, 4&;)
    Call CopyMemory(IID_IPicture(8), &HC0, 1&;)
    Call CopyMemory(IID_IPicture(15), &H46, 1&;)

    Call OleCreatePictureIndirect(tPicConv, IID_IPicture(0), True, oNewPic)
    Set PictureFromBitmap = oNewPic
End Function

Ответить

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


 

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

Вопросов: 236
Ответов: 8362
 Профиль | | #5 Добавлено: 23.05.06 17:16
ой, баянчик ) прастите, я потом вчитался в коменты ))

Ответить

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



ICQ: 223663115 

Вопросов: 21
Ответов: 285
 Профиль | | #6 Добавлено: 24.05.06 20:03
Спасибо, буду юзать - проблема то в том, что картинка - айкон и нужно вынуть из загруженного айкона нужный размер... Поэтому все пикчербокс-методы мне не помогут ...
ну эту тему мы уже ковыряли раннее...

2 HACKER - отдельно сэнкс, буду разгребаться.

Ответить

Страница: 1 |

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



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