Visual Basic, .NET, ASP, VBScript
 

   
   
     

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

Страница: 1 |

 

  Вопрос: Из STRING в Picture Добавлено: 22.09.06 19:34  

Автор вопроса:  Arvitaly | Web-сайт: okazani.ru | ICQ: 301746136 
Извините, никто не подскажет как средствами VB6 или WinApi 32 перевести формат string или byte в картинку??

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

Заранее, спасибо.
<a href="mailto:arvitaly@mail.ru">

Ответить

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

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



ICQ: 345743490 

Вопросов: 42
Ответов: 385
 Web-сайт: vt-dbnz.narod.ru
 Профиль | | #1
Добавлено: 22.09.06 22:35
Если битмап, то пожалуйста. Извлеки из строки заголовок и растр, а затем передай их в SetDiBits или в SetDIBitsToDevice.

Если же используется массив байт - это лучше по следующим причинам:
-можно передавать апишкам указатель прямо на позиции байтового массива, избавившись от лишнего копирования
-нет проблем с хранением - я вот лично до сих пор не могу толком врубиться, как VB хранит строки. Вроде в юникоде.

А вот как быть с другими форматами - не знаю.

Ответить

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



ICQ: 301746136 

Вопросов: 28
Ответов: 549
 Web-сайт: okazani.ru
 Профиль | | #2
Добавлено: 24.09.06 13:17
Проблема в том что формат GIF, а VB хранит строки в Юникоде

Ответить

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



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

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #3
Добавлено: 24.09.06 15:17
'--------------------------------------------------------------------------------
' Проект     :  OfflineClient
' Процедура  :  PictureFromMemory
' Описание   :  Получение IPicture из массива
' Кем создан :  SNE
' Дата-Время :  15.11.2004-21:45:57
'
' Параметры  :  btData()    - Данные картинки
'--------------------------------------------------------------------------------
Public Function PictureFromMemory(ByRef btData() As Byte) As IPicture
    Dim IID_IPicture(15) 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

Ответить

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



ICQ: 301746136 

Вопросов: 28
Ответов: 549
 Web-сайт: okazani.ru
 Профиль | | #4
Добавлено: 24.09.06 15:48
А можно пример вызова функции

Ответить

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



ICQ: 301746136 

Вопросов: 28
Ответов: 549
 Web-сайт: okazani.ru
 Профиль | | #5
Добавлено: 24.09.06 16:14
Все разобрался огромное спасибо

Ответить

Страница: 1 |

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



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