Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Картинка из памяти / 9 сообщений из 9, страница 1 из 1
27.11.2009, 14:21
    #36335772
Mr.Power
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Картинка из памяти
имеется загруженый файл картинки(jpg в виде байтового массива или проста текста)
как можно загрузить её в pictureBox?
Может есть способ создания StdPicture из переменной?
...
Рейтинг: 0 / 0
27.11.2009, 14:31
    #36335810
Игорь Горбонос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Картинка из памяти
> Автор: Mr.Power
> Может есть способ создания StdPicture из переменной?

Есть, поищи статью HOWTO: Capture and Print the Screen, a Form, or Any Window

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
27.11.2009, 14:47
    #36335879
Mr.Power
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Картинка из памяти
статью нашел
впринципе понятно как
сначала создаётся битмап а потом он конвертируется в stdpic
но всё равно не всё там нету превращения из байтового массива фала в битмап!
Или всётаки есть?
...
Рейтинг: 0 / 0
27.11.2009, 14:55
    #36335900
Mr.Power
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Картинка из памяти
из битмап в vbpic

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
Private Type PictDesc
    cbSizeofStruct As Long
    picType As Long
    hImage As Long
    xExt As Long
    yExt As Long
End Type

Private Type Guid
    Data1 As Long
    Data2 As Integer
    Data3 As Integer
    Data4( 0  To  7 ) As Byte
End Type

Private Declare Function OleCreatePictureIndirect Lib "olepro32.dll" ( _
      lpPictDesc As PictDesc, _
      riid As Guid, _
      ByVal fPictureOwnsHandle As Long, _
      ipic As IPicture _
    ) As Long

Public Function BitmapToPicture(ByVal hBmp As Long) As IPicture

   If (hBmp =  0 ) Then Exit Function

   Dim NewPic As Picture, tPicConv As PictDesc, IGuid As Guid

   ' Fill PictDesc structure with necessary parts:
   With tPicConv
      .cbSizeofStruct = Len(tPicConv)
      .picType = vbPicTypeBitmap
      .hImage = hBmp
   End With

   ' Fill in IDispatch Interface ID
   With IGuid
      .Data1 = &H20400
      .Data4( 0 ) = &HC0
      .Data4( 7 ) = &H46
   End With

   ' Create a picture object:
   OleCreatePictureIndirect tPicConv, IGuid, True, NewPic
   
   ' Return it:
   Set BitmapToPicture = NewPic

End Function










теперь нада найти как из переменной(текст файла) сделать битмап!
???
...
Рейтинг: 0 / 0
27.11.2009, 15:09
    #36335950
Игорь Горбонос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Картинка из памяти
Mr.Power
Код: plaintext
1.
2.
3.
4.
5.
Private Type Guid
    Data1 As Long
    Data2 As Integer
    Data3 As Integer
    Data4( 0  To  7 ) As Byte
End Type

мне помнится, что здесь была ошибка, и какой-то из Integer'ов должен быть Long'ом. Хотя могу ошибатся

Mr.Powerтеперь нада найти как из переменной(текст файла) сделать битмап!
Ну как вариант это можно сделать так:
создать битмап нужных размеров в памяти

получить адрес этого битмапа

скопировать содердимое массива в область битмапа

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
27.11.2009, 15:11
    #36335958
Mr.Power
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Картинка из памяти
скинь ссылочку на инфу
...
Рейтинг: 0 / 0
27.11.2009, 15:31
    #36336029
Игорь Горбонос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Картинка из памяти
> Автор: Mr.Power
> скинь ссылочку на инфу

например
P.S. Даже проще чем я думал

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
27.11.2009, 15:37
    #36336049
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Картинка из памяти
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
Option Explicit
'This code sourced from http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=29004&lngWId=1

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, riid As Any, ppvObj As Any) As Long
Private Declare Function CLSIDFromString Lib "ole32" (ByVal lpsz As Any, pclsid As Any) As Long
Private Declare Function GlobalAlloc Lib "kernel32" (ByVal uFlags As Long, ByVal dwBytes As Long) As Long
Private Declare Function GlobalLock Lib "kernel32" (ByVal hMem As Long) As Long
Private Declare Function GlobalUnlock Lib "kernel32" (ByVal hMem As Long) As Long
Private Declare Sub MoveMemory Lib "kernel32" Alias "RtlMoveMemory" (pDest As Any, pSource As Any, ByVal dwLength As Long)

Public Function PictureFromByteStream(b() As Byte) As IPicture
Dim LowerBound As Long
Dim ByteCount As Long
Dim hMem As Long
Dim lpMem As Long
Dim IID_IPicture( 15 )
Dim istm As stdole.IUnknown

On Error GoTo Err_Init
If UBound(b,  1 ) <  0  Then
Exit Function
End If

LowerBound = LBound(b)
ByteCount = (UBound(b) - LowerBound) +  1 
hMem = GlobalAlloc(&H2, ByteCount)
If hMem <>  0  Then
lpMem = GlobalLock(hMem)
If lpMem <>  0  Then
MoveMemory ByVal lpMem, b(LowerBound), 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 ), PictureFromByteStream)
End If
End If
End If
End If

Exit Function

Err_Init:
If Err.Number =  9  Then
'Uninitialized array
MsgBox "You must pass a non-empty byte array to this function!"
Else
MsgBox Err.Number & " - " & Err.Description
End If
End Function
...
Рейтинг: 0 / 0
27.11.2009, 18:53
    #36336500
Бенедикт
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Картинка из памяти
Можно далеко не ходить.
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Картинка из памяти / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]