
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[216.73.216.3] |
![]() |
|
![]() |
|
|
Такая ситуация:
Есть файл картинки, прочитаный в память. Как его загрузить в Image/PictureBox? Не горю желание сохранять сначала в файл, а затем грузить.... |
![]() |
Сообщ.
#2
,
|
|
Вот:
Прикреплённый файл ![]() |
Сообщ.
#3
,
|
|
|
Оо круто!!! Огромное спасибо!!!
![]() PS: Надеюсь это должно работать на виндах ниже XP. |
Сообщ.
#4
,
|
|
|
Там в коде есть лишние дёргания с CopyMemory и байтовыми массивами, что приводит к падению проги с ошибкой записи памяти если грузит больше 2 картинок подряд.
Чуток переписал этот код для стабильности и удобности использования Вот что получилось: ![]() ![]() ' ---------------------------------------------------------------------- ' --- Загрузка картинки из строки Public Function LoadPic(Buffer As String) As IPicture Dim hMem As Long, lpMem As Long Dim IID_IPicture(15) Dim istm As stdole.IUnknown Dim ByteCount As Long On Error GoTo Err_Init ByteCount = Len(Buffer) If ByteCount = 0 Then GoTo Err_Init hMem = GlobalAlloc(&H2, ByteCount) If hMem <> 0 Then lpMem = GlobalLock(hMem) If lpMem <> 0 Then MoveMemory ByVal lpMem, ByVal Buffer, ByteCount Call GlobalUnlock(hMem) If CreateStreamOnHGlobal(hMem, 1, istm) = 0 Then If CLSIDFromString(StrPtr("{7BF80980-BF32-101A-8BBB-00AA00300CAB}"), IID_IPicture(0)) = 0 Then Call OleLoadPicture(ByVal ObjPtr(istm), ByteCount, 0, IID_IPicture(0), LoadPic) End If End If End If End If Exit Function Err_Init: If Err.Number = 9 Then MsgBox "Невозможно загрузиьт картинку, нет данных!" Else MsgBox Err.Number & " - " & Err.Description End If End Function |
![]() |
Сообщ.
#5
,
|
|
Вот:
Прикреплённый файл ![]() |